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

  • 淘宝网店促销宣传策划要注意的事项有哪些(淘宝网店促销活动方案)

    淘宝网店促销宣传策划要注意的事项有哪些(淘宝网店促销活动方案)

  • 盘点最有效推广营销的方法(18种最有效推广产品的方式)

    盘点最有效推广营销的方法(18种最有效推广产品的方式)

  • qq资料卡精选照片可以关掉吗(qq资料卡精选照片怎么关掉)

    qq资料卡精选照片可以关掉吗(qq资料卡精选照片怎么关掉)

  • 苹果手机灰色的图标怎么出来(苹果手机灰色的图标悬浮)

    苹果手机灰色的图标怎么出来(苹果手机灰色的图标悬浮)

  • 联合早报为什么经常打不开(联合早报为什么不更新新闻)

    联合早报为什么经常打不开(联合早报为什么不更新新闻)

  • b站收藏夹别人能看到吗(b站收藏夹别人能看见吗)

    b站收藏夹别人能看到吗(b站收藏夹别人能看见吗)

  • windows系统属于什么软件

    windows系统属于什么软件

  • p40的相机多少倍(p40相机多少倍变焦)

    p40的相机多少倍(p40相机多少倍变焦)

  • 淘宝的dsr是指(淘宝dsr的含义是什么)

    淘宝的dsr是指(淘宝dsr的含义是什么)

  • 微信显示登录频繁怎么办(微信显示登录频繁登不上)

    微信显示登录频繁怎么办(微信显示登录频繁登不上)

  • 苹果7p手电筒打不开怎么回事(苹果7p的手电筒突然熄灭然后打不开了)

    苹果7p手电筒打不开怎么回事(苹果7p的手电筒突然熄灭然后打不开了)

  • ios13怎么清理系统垃圾(ios13怎么清理垃圾)

    ios13怎么清理系统垃圾(ios13怎么清理垃圾)

  • 美拍视频怎么去掉logo(如何去除美拍视频水印)

    美拍视频怎么去掉logo(如何去除美拍视频水印)

  • 废旧喇叭怎么连接手机(废旧喇叭怎么利用)

    废旧喇叭怎么连接手机(废旧喇叭怎么利用)

  • faceapp怎么用不了(faceapp怎么不能用了)

    faceapp怎么用不了(faceapp怎么不能用了)

  • whatsapp怎么弄日期(whatsapp调整日期)

    whatsapp怎么弄日期(whatsapp调整日期)

  • 小米8青春版尺寸(小米8青春版尺寸一样的手机)

    小米8青春版尺寸(小米8青春版尺寸一样的手机)

  • 闲鱼卖假货怎么向警方起诉(怎么上闲鱼卖货)

    闲鱼卖假货怎么向警方起诉(怎么上闲鱼卖货)

  • 拼多多置顶消息怎么取消(拼多多置顶在哪里)

    拼多多置顶消息怎么取消(拼多多置顶在哪里)

  • 信息黑名单在哪里找到(信息黑名单在哪里找到华为)

    信息黑名单在哪里找到(信息黑名单在哪里找到华为)

  • cad无法跨图复制(cad不能跨图复制粘贴是怎么回事)

    cad无法跨图复制(cad不能跨图复制粘贴是怎么回事)

  • HTML介绍以及常用代码(html里面有什么)

    HTML介绍以及常用代码(html里面有什么)

  • 老师,不干了,被偷家了,SAM分割任何事物模型,0样本分割了我研究一个月的数据(老师不干了可以从事什么行业)

    老师,不干了,被偷家了,SAM分割任何事物模型,0样本分割了我研究一个月的数据(老师不干了可以从事什么行业)

  • WordPress子主题使用方法(wordpress文章主题)

    WordPress子主题使用方法(wordpress文章主题)

  • 房地产企业增值税计算
  • 车船税征税范围口诀
  • 老板故意拖欠税款怎么办
  • 坏账准备怎么做T型账户
  • 财务报表没报会影响出口退税吗为什么
  • 教育行业税收优势分析
  • 房屋契税是按照发票上的不含税价格交吗
  • 跨年主营业务成本直接冲回可以吗
  • 工会应付下级经费
  • 进口报关手续费
  • 高新企业研发费用占比要求
  • 法人投资转入旧机器无发票怎么入账?
  • 打官司败诉承担的费用
  • 外购材料运输费怎么入账
  • 单位装饰
  • 盐酸编号
  • 建筑企业管理部门
  • 合伙企业如何计算缴纳个人所得税
  • 金融服务收入如何做账
  • 可供出售金融资产会计处理
  • 每年的发票年底是不是就失效了
  • 预付账款收不回来摘要怎么写
  • 委托发行股票会亏本吗
  • 分公司应收款转总公司会计分录?
  • 没有购销合同怎么申报印花税
  • 事业单位年末预算会计货币资金在贷方有余额对吗
  • 苹果电脑如何缩小图片大小
  • 办公家具会计分录怎么做
  • 家常煲汤500例的做法窍门
  • 腾讯电脑管家帮忙卸载
  • 合同印花税会计分录
  • 怎么让资产负债率下降
  • window10今天更新
  • phpcookie
  • 预收账款的账务处理摘要
  • 愚人二部曲
  • 土地价款会计分录
  • 鼓励证券投资基金的政策
  • 捐资民办学校可以盈利吗
  • vue清空form数据再重新赋值
  • html5简单吗
  • php php
  • 简述php操作mysql数据库的基本步骤
  • mzip命令 控制磁盘驱动器
  • 发票货物或应税劳务名称怎么填写
  • 可转债公允价值变动计入
  • 农民专业合作社连续几年未从事经营活动吊销营业执照
  • dubbo 实现原理
  • phpcms是什么框架
  • python输出inf
  • python线程间通信的几种方法
  • 资产类会计科目记忆口诀
  • 利润表中的资产处置收益应该计入营业利润还是利润总额
  • 行政单位基建账并入大账规定
  • 承租人收到融资租赁款
  • 建筑工程承包合同保证保险中,承保工程所有人
  • 装饰公司购买的安装服务怎么入账
  • 注销企业基本户销户规定
  • 为员工买的商业保险怎么做账
  • mysql多个group by
  • sql中存储过程的用法
  • win8.1电脑设置在哪里
  • win10怎么设置允许远程
  • ie10和ie11
  • 原版windowsxp安装
  • 使用 WinSCP 管理 Linux VPS/服务器上的文件 图文教程
  • 正版win10怎么用
  • cocos2dx用什么ide
  • nodejs代码规范
  • shell脚本符号
  • android DefaultHttpClient设置setCookieStore
  • android反编译apk
  • Python性能优化指南
  • 安卓开发 内存
  • javascript面向对象精要
  • js延时加载方式
  • js怎么拿到表单提交数据
  • 湖北国税发票真伪查询
  • 江苏国税申报怎么操作流程
  • 社保uk申请流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设