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

  • iqoo8pro怎么设置导航键(iQOO8pro怎么设置双系统)

    iqoo8pro怎么设置导航键(iQOO8pro怎么设置双系统)

  • 微信可以投屏吗(微信可以投屏吗电视上)

    微信可以投屏吗(微信可以投屏吗电视上)

  • win11怎么开启电池养护模式(win11怎么开启电池高性能模式)

    win11怎么开启电池养护模式(win11怎么开启电池高性能模式)

  • vivo x27密码忘了怎么解锁(vivox27密码忘了怎么解锁)

    vivo x27密码忘了怎么解锁(vivox27密码忘了怎么解锁)

  • 美图秀秀手机上照片怎么加边框(美图秀秀手机上怎么修改数字)

    美图秀秀手机上照片怎么加边框(美图秀秀手机上怎么修改数字)

  • 打96067为什么是空号(为什么打96008是空号)

    打96067为什么是空号(为什么打96008是空号)

  • 苹果11pro有没有指纹解锁(苹果11pro有没有高刷)

    苹果11pro有没有指纹解锁(苹果11pro有没有高刷)

  • qq能拉黑别人吗(qq能拉黑别人,别人知道吗)

    qq能拉黑别人吗(qq能拉黑别人,别人知道吗)

  • 充电器充了一夜不变灯(充电器充了一夜忘拔了)

    充电器充了一夜不变灯(充电器充了一夜忘拔了)

  • 打印机打印一道一道的(打印机打印一道一道的黑线)

    打印机打印一道一道的(打印机打印一道一道的黑线)

  • 短视频运营主要包括哪四个方面(短视频运营主要学什么)

    短视频运营主要包括哪四个方面(短视频运营主要学什么)

  • 抖音为什么看不到别人的点赞(抖音为什么看不到直播)

    抖音为什么看不到别人的点赞(抖音为什么看不到直播)

  • 微信开视频黑屏是什么原因(微信开视频黑屏怎么样解除)

    微信开视频黑屏是什么原因(微信开视频黑屏怎么样解除)

  • 华为p40忘记锁屏密码怎么办(华为p40忘记锁屏密码了怎么解)

    华为p40忘记锁屏密码怎么办(华为p40忘记锁屏密码了怎么解)

  • 粘贴图片到文档为什么显示不全(粘贴图片到word)

    粘贴图片到文档为什么显示不全(粘贴图片到word)

  • 三星s8门禁卡教程(三星s8门禁卡写入手机nfc)

    三星s8门禁卡教程(三星s8门禁卡写入手机nfc)

  • 微信误删聊天记录恢复(微信误删了好友怎么找回聊天记录)

    微信误删聊天记录恢复(微信误删了好友怎么找回聊天记录)

  • 为什么双十一发货这么慢(为什么双十一发布二十一条)

    为什么双十一发货这么慢(为什么双十一发布二十一条)

  • 爱奇艺一个号最多能同时上几个(爱奇艺一个账号最多几个人用)

    爱奇艺一个号最多能同时上几个(爱奇艺一个账号最多几个人用)

  • 如何在设置中隐藏自己的软件(如何在设置中隐藏应用苹果)

    如何在设置中隐藏自己的软件(如何在设置中隐藏应用苹果)

  • 微信里非朋友是咋回事(微信里非对方朋友是怎么的)

    微信里非朋友是咋回事(微信里非对方朋友是怎么的)

  • word保存找不到桌面(word保存了找不到了怎么办 最近打开也没有)

    word保存找不到桌面(word保存了找不到了怎么办 最近打开也没有)

  • 快手和抖音可以发一样的作品吗(快手和抖音可以一块直播吗)

    快手和抖音可以发一样的作品吗(快手和抖音可以一块直播吗)

  • world如何添加目录(word怎么添加目录内容)

    world如何添加目录(word怎么添加目录内容)

  • p30文件管理在哪(p30pro文件管理在哪里)

    p30文件管理在哪(p30pro文件管理在哪里)

  • oppor15右上角显示耳机(oppo 手机右上角有个菜单怎么取消)

    oppor15右上角显示耳机(oppo 手机右上角有个菜单怎么取消)

  • 哪些企业需要缴纳企业所得税?
  • 代开专用发票需要交城建税吗
  • 电子承兑汇票兑现
  • 印花税不计入应交税科目吗?
  • 劳务服务公司不含派遣,能接外包吗
  • 什么情况下可以要求员工待岗
  • 未达起征点的税金如何做账
  • 财务上大写的元怎么写
  • 年偿债基金和年金现值
  • 物业公司可以开租赁发票吗
  • 出口退税业务提醒信息包括哪些
  • 小规模纳税人普通发票可以抵税吗
  • 收付转凭证如何排序装订
  • 开票交税当月不确认收入如何做账?
  • 收到一张建筑服务*施工费发票
  • 公司补贴怎样做分录?
  • 年终奖和当月工资合并申报税
  • 学校有税号可以收专票吗
  • 视同销售行为销项税额该怎么核算
  • 商品出口消费税计算方法
  • 公司用自己的设备投资怎么交税呢怎么做账
  • 基金的业绩是什么
  • 图书对方开具的证明
  • 资产负债应付账款怎么算
  • 收到政府补助的现金流
  • 苹果6拍照如何
  • 软件开发并销售怎么做
  • 多收不用退的货物怎么办
  • 汽车空调不制冷的原因有六种
  • 企业年金基金收益
  • php 魔术
  • php 单例模式优点及如何实现
  • axure rp9视频教程
  • php sid
  • 固定资产一次性折旧账务处理
  • GPT-4 免费体验方法
  • 报废机器设备会计分录
  • 增值税发票的作业
  • ab1562a固件
  • 对公账号备用金怎么用
  • 小规模企业逾期是微信扫码付款吗
  • 报关代理费计入什么科目
  • 高效快速编制会计分录如何做?
  • Python函数怎么返回
  • centos编译运行c程序
  • 玩转mongodb4.0从入门到实践
  • 无法收到的租金要交房产税吗
  • 滞纳金是
  • 个人劳务费怎么退税
  • 库存商品转成本意味着什么
  • 企业现金流量表怎么分析
  • 退税登记怎么办理
  • 营业利润净利润利润总额的区别
  • 企业所得税的应纳税所得额怎么计算
  • 营改增清包工
  • 股东变更实收资本变更吗
  • 怎么算股本溢价
  • 商场联营扣点缴纳增值税税率
  • 材料按计划成本计价下,外购材料结算
  • 年金现值和年金终值的例题
  • 购买办公楼分期合同
  • 旅游饮食服务企业的特点包括
  • sql解析原理
  • windows web server 2008
  • window10预览版
  • 电脑系统2003
  • ubuntu系统启动过程
  • 苹果MAC电脑怎么砸壳应用app
  • win7磁盘c满了怎么办却又分不清哪些是该删除
  • fciv.exe
  • linux swap分区必须吗
  • win7虚拟内存最大设置多少
  • linux内核命名
  • opengl纹理贴图图片位置
  • js设置颜色代码
  • 安徽省电子税务局怎么下载
  • 可以抵扣的消费税有哪些
  • 对税务巡视工作的意见
  • 湖南省地方税务局
  • 房屋维修基金会计分录处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设