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

  • 苹果13promax怎么设置返回键(苹果13promax怎么显示电池电量百分比)

    苹果13promax怎么设置返回键(苹果13promax怎么显示电池电量百分比)

  • 抖音几分钟前在线如何设置(抖音几分钟在线是什么意思)

    抖音几分钟前在线如何设置(抖音几分钟在线是什么意思)

  • 荣耀30手机有耳机孔吗(荣耀30手机耳机设置)

    荣耀30手机有耳机孔吗(荣耀30手机耳机设置)

  • 苹果x用一会后面发烫(苹果x手机用一会发热怎么回事)

    苹果x用一会后面发烫(苹果x手机用一会发热怎么回事)

  • appstore图片加载不出来怎么办(apple store图片加载不出来)

    appstore图片加载不出来怎么办(apple store图片加载不出来)

  • 家用服务器可以干什么(家用服务器可以换成路由器吗)

    家用服务器可以干什么(家用服务器可以换成路由器吗)

  • aqmal00是华为什么型号(aqmal00是华为10s吗)

    aqmal00是华为什么型号(aqmal00是华为10s吗)

  • 华为闹铃音乐怎么设置成自定义音乐(华为闹铃音乐怎么关闭)

    华为闹铃音乐怎么设置成自定义音乐(华为闹铃音乐怎么关闭)

  • 抖音搬运评级能恢复吗(抖音搬运评级多久能恢复)

    抖音搬运评级能恢复吗(抖音搬运评级多久能恢复)

  • 鼠标属于什么设备(鼠标属于什么设置)

    鼠标属于什么设备(鼠标属于什么设置)

  • 苹果手机进水声音变沙哑变小(苹果手机进水声音没有了怎么办)

    苹果手机进水声音变沙哑变小(苹果手机进水声音没有了怎么办)

  • 苹果无法下载提示重试(苹果手机提示无法下载)

    苹果无法下载提示重试(苹果手机提示无法下载)

  • 爱奇艺有快进播放吗(爱奇艺快进播放遇到问题怎么回事)

    爱奇艺有快进播放吗(爱奇艺快进播放遇到问题怎么回事)

  • 5g路由器是指5g网络么(5g路由器和5g网络有什么区别吗)

    5g路由器是指5g网络么(5g路由器和5g网络有什么区别吗)

  • 手机wifi坏了怎么办(手机wifi坏了怎么迁移微信聊天记录)

    手机wifi坏了怎么办(手机wifi坏了怎么迁移微信聊天记录)

  • 荣耀Magic Watch 2有没有扬声器(荣耀magicwatch2能下载软件吗)

    荣耀Magic Watch 2有没有扬声器(荣耀magicwatch2能下载软件吗)

  • 快手作品限流什么情况(快手作品限流啥意思)

    快手作品限流什么情况(快手作品限流啥意思)

  • 淘宝无需物流发货对店铺有影响吗(淘宝无需物流发货的类目)

    淘宝无需物流发货对店铺有影响吗(淘宝无需物流发货的类目)

  • 苹果手机6怎么返回上一级(苹果手机6怎么截屏)

    苹果手机6怎么返回上一级(苹果手机6怎么截屏)

  • 内置管理员无法激活此应用解决方法(内置管理员无法打开此应用)

    内置管理员无法激活此应用解决方法(内置管理员无法打开此应用)

  • echarts修改饼图,环形图的圆环宽度,大小(echarts饼图背景图片)

    echarts修改饼图,环形图的圆环宽度,大小(echarts饼图背景图片)

  • 2023年享受六税两费减免吗
  • 缴纳以前年度所得税怎么做分录
  • 没有收入也可以信用贷
  • 三证合一后税务登记证要收回吗
  • 税务局返还的三种税种
  • 电子记账软件出纳帐
  • 间接费用是指
  • 出口退税业务提醒信息包括哪些
  • 核算科目拨出专票怎么弄
  • 商业汇票的使用范围
  • 个人取得的咨询费是什么
  • 一年内到期的非流动负债包括哪些科目
  • 充话费送手机如何缴纳增值税
  • 餐馆的前期投资预算
  • 暂估确定收不到发票会计分录怎么做
  • 工程在建期间土地的摊销如何处理
  • 没有发票的管理费用汇算清缴的时候怎么调出来
  • 报刊杂志广告文案写作
  • 建筑业如何核算费用
  • 应收账款怎么样转入以前年度损益调整
  • 企业捐赠现金支出应在哪个项目反应
  • 为什么增值税不影响利润
  • 个人退回公积金怎么操作
  • 联通官网测网速
  • linux dns配置服务器
  • 把u盘变成光盘模式
  • 购买树苗计入会计科目吗
  • 王者荣耀如何进入3D视角
  • redis在php项目中的使用实例
  • kb4579311安装失败
  • 题管理录入新内容
  • php的教程
  • 项目提成比例
  • 减免增值税会计处理
  • php-xml
  • element ui的作用
  • python基础100例
  • bert的原理
  • 上月普通发票怎么作废
  • bash的主要功能
  • 采购货未到收到发票
  • 资产减值损失结转到哪里
  • 哪些税金不需要通过应交税费科目核算
  • 出差补贴是额外的吗
  • elementui组件有哪些
  • 在mysql中子查询是
  • 将购入的原材料用于不动产在建工程
  • 电子发票自己打印黑白有效吗
  • 生育津贴现在可以打个人账户么
  • 稳岗补贴操作
  • 预收工程款怎么做账
  • 长期股权投资的成本法和权益法区别
  • 农产品如何进入批发市场
  • 自己做的房子可以办房产证吗
  • 人工费的发票税率怎么算
  • 应交税费进项税额转出
  • 工业企业建立账套
  • MySQL 5.6 中 TIMESTAMP有那些变化
  • sql server使用的是什么逻辑模型
  • sql server触发器的编写与使用
  • windows server2008 64位没有安装音频怎么办?
  • windows命令操作
  • 在系统注册表中注册
  • linux系统中命令什么大小写
  • linux命令怎么执行
  • win10系统admin和oobe
  • bootstraptable教程
  • jquery的validate前端表单验证
  • node.js介绍
  • cocos2dx-3.2+lua 常用代码
  • unity后期
  • js最简单的代码
  • shell脚本 -ne 0
  • unity持久化存储
  • scrollbottom用法
  • [置顶]公主大人接下来是拷问时间31
  • js进阶视频教程
  • javascript的核心语言对象包括
  • 夫妻相聚
  • 赞美税务干部对联大全集锦
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设