位置: 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什么意思)

  • 微信好友删除怎么找回(微信好友删除怎么看聊天记录)

    微信好友删除怎么找回(微信好友删除怎么看聊天记录)

  • 网络正常微信发不出去的原因是什么(网络正常微信发不出消息)

    网络正常微信发不出去的原因是什么(网络正常微信发不出消息)

  • oppo watch怎么用微信(oppowatch怎么用小天才)

    oppo watch怎么用微信(oppowatch怎么用小天才)

  • 怎么把爱奇艺的视频下载下来(怎么把爱奇艺的视频保存到相册)

    怎么把爱奇艺的视频下载下来(怎么把爱奇艺的视频保存到相册)

  • 小米8可用18w吗(小米8支持33w吗)

    小米8可用18w吗(小米8支持33w吗)

  • vivox27截屏方法(vivox27手机如何截屏幕)

    vivox27截屏方法(vivox27手机如何截屏幕)

  • 虚拟机对电脑有坏处(虚拟机电脑有哪些)

    虚拟机对电脑有坏处(虚拟机电脑有哪些)

  • 腾讯会员在ipad登录不上去(腾讯会员在ipad怎么用手机号登录微信)

    腾讯会员在ipad登录不上去(腾讯会员在ipad怎么用手机号登录微信)

  • 钉钉加入的群怎么不显示(钉钉加入的群怎么找不到)

    钉钉加入的群怎么不显示(钉钉加入的群怎么找不到)

  • 为什么往群里发不了红包(为什么往群里发文件发不出去)

    为什么往群里发不了红包(为什么往群里发文件发不出去)

  • 抖音为什么会自动关注别人(抖音为什么会自动发布作品)

    抖音为什么会自动关注别人(抖音为什么会自动发布作品)

  • 苹果怎么发空白(苹果手机怎么发空格键)

    苹果怎么发空白(苹果手机怎么发空格键)

  • sps是什么意思(塑料ps是什么意思)

    sps是什么意思(塑料ps是什么意思)

  • 入驻京东需要什么条件(入驻京东需要什么)

    入驻京东需要什么条件(入驻京东需要什么)

  • ppt 超链接 回到目录(ppt超链接回到指定的文字)

    ppt 超链接 回到目录(ppt超链接回到指定的文字)

  • whatsapp怎么改备注(whatsapp怎么改群备注)

    whatsapp怎么改备注(whatsapp怎么改群备注)

  • 手机运动数据权限在哪(运动数据权限在哪里打开)

    手机运动数据权限在哪(运动数据权限在哪里打开)

  • 喜马拉雅的音频怎么下载到手机(喜马拉雅的音频怎么转换成mp3)

    喜马拉雅的音频怎么下载到手机(喜马拉雅的音频怎么转换成mp3)

  • 华为畅享9plus隐藏功能怎么使用(华为畅享9plus隐私空间在哪)

    华为畅享9plus隐藏功能怎么使用(华为畅享9plus隐私空间在哪)

  • 华为智慧剪辑在哪里(华为智慧剪辑在哪里打开)

    华为智慧剪辑在哪里(华为智慧剪辑在哪里打开)

  • 微信怎么不删人只拒收(微信怎么不删人但是可以看不到他的消息)

    微信怎么不删人只拒收(微信怎么不删人但是可以看不到他的消息)

  • 在Win10系统中,防火墙如何设置白名单?(在Win10系统中卸载最近更新的补丁并重启电脑)

    在Win10系统中,防火墙如何设置白名单?(在Win10系统中卸载最近更新的补丁并重启电脑)

  • 跟Win10相同,Win11也会在System32目录下创建大量空文件夹(windows10和win10)

    跟Win10相同,Win11也会在System32目录下创建大量空文件夹(windows10和win10)

  • 进项税额加计抵减5%
  • 净利润是指税前利润
  • 建筑业增值税税额怎么算
  • 开票人和复核人收款人能是一个人吗
  • 收到发票未付款怎么处理
  • 房租 收入
  • 应付职工薪酬代扣款项账务处理
  • 账簿登记的基本要求
  • 预付款属于什么结算方式
  • 经营租赁发生改良费用的会计分录如何处理?
  • 公司成本可以抵扣税吗
  • 传媒公司的成本构成有哪些
  • 税控机减免会计分录
  • 代理国库税收收缴怎么做账
  • 员工受伤报销
  • 企业购买理财产品的会计分录
  • 供应商给客户员工回扣有罪吗
  • 发票已认证次月冲红
  • 政府补助专款专用如何入账
  • world超链接
  • 冲账备用金的记账凭证怎么填
  • 公司银行贷款能贷多少
  • 票已收到款未付怎么办
  • 法人不缴纳社保员工可以缴纳吗怎么办
  • 开机要按f1才能进系统
  • 苹果发布首款MR头显
  • win7界面旋转
  • nginx配置php项目
  • 对外支付佣金需要扣缴所得税吗
  • ccna 试题
  • easyui表格分页
  • 初级职称到中级职称需要上继续教育课吗
  • 银行对账单附在记账凭证中吗
  • win10自带的重装能彻底清除上网记录和u盘记录吗
  • 账户外币转人民币
  • 印花税申报完成如何缴纳
  • 担保贷款借款人征信不好有影响吗
  • 哪些税费需要计提
  • 家具采购单
  • js方案
  • sql 生成新表
  • 购进商品的运费怎么记账
  • 资金占用费的税费是多少
  • 购买礼品送客户取得普票怎么做账
  • 企业成本计算的依据是什么
  • 生产过程中产品质量问题
  • 实际费用以什么为准
  • 上个月结转的流量下个月能用吗
  • 自然人可以申请一般纳税人吗
  • 小规模纳税人如何缴纳企业所得税
  • 个体工商户如何缴纳社保
  • 如何在卸载程序中隐藏已安装程序
  • directx出现错误
  • win10怎么打开语言设置
  • win10预览版21277
  • win10专业版注册表在哪里
  • 无线网络连接不上显示无ip分配
  • u盘制作winpe启动盘
  • 如何查看win7激活码能重复使用
  • win10怎么设置宽带连接上网
  • 苹果笔记本安装win10
  • centos哪个版本最好用2022
  • win7怎么设置u盘启动为第一启动项
  • win10系统无线网络连接在哪
  • react either
  • Android:Activity+Fragment及它们之间的数据交换(一)
  • js canvas绘制图片
  • js数组菜鸟教程
  • 如何强制和别人qq聊天
  • css浏览器兼容性问题
  • python数字图像处理库
  • jquery mobile ui
  • 从零基础开始
  • shell中setenv
  • javascript怎么弄
  • python登陆代码
  • js如何使用
  • 江西电子税务局官网app
  • 个人所得税需要计提吗?
  • 怎么判断增值税能不能抵扣
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设