位置: IT常识 - 正文

uview2.0封装http请求实战以及常见请求传参实录

编辑:rootadmin
uview2.0封装http请求实战以及常见请求传参实录

推荐整理分享uview2.0封装http请求实战以及常见请求传参实录,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

     1.前言      2.使用步骤          2.1 配置请求拦截器以及api集中管理配置          2.2 main.js中进行引入请求拦截器          2.3 页面中引入请求方法并使用

1.前言

    uview2.0是uniapp开发中使用频率相对来讲比较高的一款框架,今天从实战角度介绍一下关于http请求uview是如何进行封装.     该插件支持post、get、put和delete,以及上传下载等请求,有如下特点:

基于Promise对象实现更简单的request使用方式,支持请求和响应拦截 支持全局挂载 支持多个全局配置实例 支持自定义验证器 支持文件上传/下载 支持task 操作 支持自定义参数 支持多拦截器 对参数的处理比uni.request更强

2.使用步骤2.1 配置请求拦截器以及api集中管理配置

    这两个文件夹都返回在项目根目录下的common文件夹下. api集中管理配置http.api.js内容:

const http = uni.$u.http// 根据wx.login获取的code获取小程序openID(get请求路径传参,不传递token)export const getOpenId = (data) => http.get('/user/getOpenId', data)// 注意:如果get请求中没有请求参数可以省略data,具体方法中也不用传递参数;// 根据wx.login获取的code获取小程序openID(get请求路径传参,传递token)export const getOpenIdByToken = (data,config = {}) => http.get('/user/getOpenId', data,config)// post请求,用户登录(post请求请求体传参不传递token)export const login = (params, config = {}) => http.post('/user/login', params, config)// post请求,传递内容(post请求请求路径传参传递token)export const throwBottle = (params, config = {}) => http.post('/drift/send?content='+params.content,params, config)uview2.0封装http请求实战以及常见请求传参实录

    请求拦截器http.interceptor.js内容:

// 此vm参数为页面的实例,可以通过它引用vuex中的变量module.exports = (vm) => { // 初始化请求配置 uni.$u.http.setConfig((config) => { /* config 为默认全局配置*/ config.baseURL = 'http://127.0.0.1:8080'; /* 根域名 */ return config })// 请求拦截uni.$u.http.interceptors.request.use((config) => { //根据custom参数中配置的是否需要token,添加对应的请求头if(config?.custom?.auth) {// 本处使用的是获取缓存中的token信息,也可以在此通过vm引用vuex中的变量,具体值在vm.$store.state中config.header.token = uni.getStorageSync("token")} return config }, config => { // 可使用async await 做异步操作 return Promise.reject(config)})uni.$u.http.interceptors.response.use((response) => {/* 对响应成功做点什么 可使用async await 做异步操作*/if (response.data.code !== 200) { // 服务端返回的状态码不等于200,则reject() return Promise.reject(response)} // return Promise.reject 可使promise状态进入catchif (response.config.custom.verification) { // 演示自定义参数的作用 return response.data}return response}, (response) => {/* 对响应错误做点什么 (statusCode !== 200)*/console.log(response)return Promise.reject(response)})}2.2 main.js中进行引入请求拦截器

    main.js内容:

import App from './App'// #ifndef VUE3import Vue from 'vue'Vue.config.productionTip = falseApp.mpType = 'app'// 引入 store import store from '@/store/index.js'Vue.prototype.$store = storeconst app = new Vue({ ...App,store})// 引入全局uViewimport uView from './uni_modules/uview-ui'Vue.use(uView)// 引入请求封装,将app参数传递到配置中require('./common/http.interceptor.js')(app)app.$mount()// #endif// #ifdef VUE3import { createSSRApp } from 'vue'export function createApp() { const app = createSSRApp(App) return { app }}// #endif2.3 页面中引入请求方法并使用

    以下demo中将常用的请求方式进行了分类,并添加了是否传递token的传参方式. post请求体传参(不传递token) post请求路径传参(传递token) get请求路径传参(不传递token) get请求路径传参(传递token)

    示例页面截图:

    页面内容:

<template><view><view>消息页面</view><!-- 发送请求 --><view><button type="primary" @click="method1()">post请求体传参(不含token)</button></view><view><button type="primary" @click="method2()">post路径传参(含token)</button></view><view><button type="primary" @click="method3()">get请求路径传参(不含token)</button></view><view><button type="primary" @click="method4()">get请求路径传参(含token)</button></view></view></template><script>import {login,send,getOpenId,getOpenIdByToken} from '../../common/http.api.js';export default {data() {},methods:{method1(){this.serverLogin()},method2(){this.serverSend("478")},method3(){this.serverOpenId("123")},method4(){this.serverOpenIdByToken("456")},serverSend(content) {send({'content': content},{'custom': { 'auth': true }}).then(response => {console.log("发送信息:" + JSON.stringify(response))}).catch((data) => {console.log("发送消息失败:" + JSON.stringify(data))uni.showToast({title: "网络不给力,请稍后再试!"})})},serverLogin() {login({"loginType": 1,"openId": "123"}).then(response => {console.log("登录信息:"+JSON.stringify(response))uni.setStorageSync('token',response.data.data.token)}).catch((data) => {console.log("登录失败:" + JSON.stringify(data))uni.showToast({title: "网络不给力,请稍后再试!"})})},serverOpenIdByToken(jsCode){getOpenId({data:{"jsCode":jsCode},'custom': { 'auth': true }}).then(response => {console.log("openId信息:"+JSON.stringify(response))}).catch((data) => {console.log("openId信息获取失败:" + JSON.stringify(data))uni.showToast({title: "网络不给力,请稍后再试!"})})},serverOpenId(jsCode){getOpenId({data:{"jsCode":jsCode}}).then(response => {console.log("openId信息:"+JSON.stringify(response))}).catch((data) => {console.log("openId信息获取失败:" + JSON.stringify(data))uni.showToast({title: "网络不给力,请稍后再试!"})})}}}</script><style lang="scss">.u-page__item__slot-icon{width: 50rpx;height:50rpx;}</style>

补充:使用post请求进行无参的退出操作(注意要传递一个空对象): api.js:

export const logout = (params,config = {}) => http.post('/logout',params, config)

页面:

logout({},{'custom': { 'auth': true }}).then(response => {// 退出操作逻辑}).catch((data) => {console.log("用户退出失败:" + JSON.stringify(data))uni.showToast({title: data.data.msg,icon : 'none'})})

    以上是使用uview2.0封装http请求的处理过程记录,如果感觉有所帮助欢迎评论区留言点赞或是收藏!     官方地址链接:https://www.uviewui.com/js/http.html

本文链接地址:https://www.jiuchutong.com/zhishi/281005.html 转载请保留说明!

上一篇:土豆发芽了能吃吗?慎吃发了芽的土豆(土豆发芽了能吃吗有没有毒)

下一篇:ashserv.exe是什么进程 安全吗 ashserv进程有什么作用(assoc.exe=exefile什么意思)

  • 华为p50pro怎么设置指纹解锁(华为p50pro怎么设置24小时)

    华为p50pro怎么设置指纹解锁(华为p50pro怎么设置24小时)

  • mini led背光技术原理(miniled背光是什么)

    mini led背光技术原理(miniled背光是什么)

  • 智慧团建系统为什么登录不了(智慧团建系统为什么看不到转接团关系的申请)

    智慧团建系统为什么登录不了(智慧团建系统为什么看不到转接团关系的申请)

  • 三星s10+陶瓷版和玻璃版区别(三星s10+陶瓷版重量)

    三星s10+陶瓷版和玻璃版区别(三星s10+陶瓷版重量)

  • useradmin的密码是多少(useradmin的密码是wifi密码吗)

    useradmin的密码是多少(useradmin的密码是wifi密码吗)

  • 腾讯会议电脑版有录屏功能吗(腾讯会议电脑版退出登录在哪里)

    腾讯会议电脑版有录屏功能吗(腾讯会议电脑版退出登录在哪里)

  • 华为caztl10是啥型号(华为caz-al10是什么型号?)

    华为caztl10是啥型号(华为caz-al10是什么型号?)

  • b站夜间模式怎么开(b站app夜间模式)

    b站夜间模式怎么开(b站app夜间模式)

  • vivo手机底部返回键怎么调出来(vivo手机底部返回键怎么灵敏度低)

    vivo手机底部返回键怎么调出来(vivo手机底部返回键怎么灵敏度低)

  • 小米防闪烁模式有什么用(小米防闪烁模式有必要打开吗)

    小米防闪烁模式有什么用(小米防闪烁模式有必要打开吗)

  • 怎样转发别人发的朋友圈(怎样转发别人发的朋友圈连图带文字)

    怎样转发别人发的朋友圈(怎样转发别人发的朋友圈连图带文字)

  • 华为荣耀9x手机支持快充吗(华为荣耀9x手机怎么样)

    华为荣耀9x手机支持快充吗(华为荣耀9x手机怎么样)

  • word文档如何做目录(word文档如何做封面)

    word文档如何做目录(word文档如何做封面)

  • 小米锁sn码在哪里(小米锁查询)

    小米锁sn码在哪里(小米锁查询)

  • 苹果11后盖是磨砂的吗(苹果11后盖磨花了)

    苹果11后盖是磨砂的吗(苹果11后盖磨花了)

  • 怎么取消qq默认设置(怎么取消QQ默认名片)

    怎么取消qq默认设置(怎么取消QQ默认名片)

  • 华为悬乎浮窗怎么取消(华为悬浮窗开启后按钮在哪)

    华为悬乎浮窗怎么取消(华为悬浮窗开启后按钮在哪)

  • oppo水滴屏能不能设置隐藏(oppo水滴屏有哪些型号)

    oppo水滴屏能不能设置隐藏(oppo水滴屏有哪些型号)

  • 怎么激活苹果11(怎么激活苹果14pro)

    怎么激活苹果11(怎么激活苹果14pro)

  • 苹果x摄像头是哪家的(苹果x摄像头是蓝宝石玻璃吗)

    苹果x摄像头是哪家的(苹果x摄像头是蓝宝石玻璃吗)

  • 限制群搜索处理啥意思(限制群搜索处理严重吗)

    限制群搜索处理啥意思(限制群搜索处理严重吗)

  • vivo手机4ghd怎么关闭(vivo手机如何让手机显示hd)

    vivo手机4ghd怎么关闭(vivo手机如何让手机显示hd)

  • p30呼吸灯设置(p30pro呼吸灯设置)

    p30呼吸灯设置(p30pro呼吸灯设置)

  • redmi7待机时间(红米7设置24小时)

    redmi7待机时间(红米7设置24小时)

  • 苹果x手写怎么设置(苹果x手写怎么设置出来)

    苹果x手写怎么设置(苹果x手写怎么设置出来)

  • Python数学建模系列(一):规划问题之线性规划(python进行数学建模)

    Python数学建模系列(一):规划问题之线性规划(python进行数学建模)

  • 一般纳税人和小规模纳税人哪个合适
  • 工业厂房房产税税率
  • 企业纳税信用等级评定标准
  • 企业所得税是什么意思大白话
  • 研发费用加计扣除是什么意思啊
  • 进项税额转出借贷
  • 未确认融资费用和长期应付款
  • 交通运输行业属于什么性质
  • 子公司注销后账务如何处理
  • 房地产开发企业资质等级有几个
  • 无偿划拨资产涉税问题
  • 个人所得税补交税
  • 融资租赁首付款支付给供应商
  • 进口货物的代理报关服务费计入
  • 制造费用的
  • 免税企业收到的专用发票要怎么转出
  • 增值税专用发票可以开电子发票吗
  • 2021年路桥费抵扣最新政策
  • 企业以货币形式取得的收入
  • 固定资产清理属于资产类的备抵科目吗
  • 外购商品领用会计分录
  • boss直聘收费怎么这么贵
  • 农副产品的进项税额
  • 商标续展费用入什么科目
  • 怎么设置静音iphone
  • win11发热严重怎么解决
  • 业务招待费扣除基数的收入包括哪些
  • 社保费税前扣还是税后扣
  • laravel learnku
  • 华为路由器怎么设置wifi密码
  • vue相关
  • Mont Choisy Beach, Mauritius (© Robert Harding World Imagery/Offset by Shutterstock)
  • php验证码功能怎么实现
  • 业务招待费的企业是什么
  • 应收账款的
  • wordpress隐藏内容付费可见
  • Python支持向量能干什么
  • 免费下载仿iOS主题
  • 企业的业务招待费属于什么费用
  • 赡养老人专项附加扣除的标准
  • 现金流量表怎么填写
  • mustn't be allowed
  • 投资管理公司成立的请示范文
  • 专票金额高于实收金额
  • 培训学校收入如何确认
  • 企业向个人的借款合同
  • 企业所得税汇算表
  • 个体户如何填报工商年报资金数额
  • 预付款项怎么做分录
  • 加权平均净资产收益率公式
  • 实收资本有关会计科目
  • 交易性金融资产属于流动资产
  • 已经确认收入
  • 坏账准备确认坏账
  • 营改增后建筑行业增值税税率
  • 银行汇票结算业务
  • 如何在sql server表中添加数据表格为什么没有显示
  • mysql的优化有哪几种
  • sql you
  • centos7 nis
  • xp系统远程桌面设置
  • xp无法进入桌面怎么办
  • centos 安装chia
  • linux find -a
  • win10预览版和正式版
  • windows局域网共享文件用的什么协议
  • linux系统启动步骤
  • shell脚本判断一个字符串是否为空
  • opengl1
  • 微信小程序表单制作代码
  • unity3d创建模型
  • js原型作用
  • 谈一谈如何抓好党建工作
  • 备忘录全部笔记
  • 黑龙江国税局官网
  • 电子发票版式文件生成失败怎么办
  • 出口退税报关单在哪里打印
  • 亳州契税补贴如何领取
  • 何为标兵称号
  • 税控盘在哪领取
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设