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

  • 苹果音乐我喜欢的歌在哪里(苹果音乐我喜欢的歌)

    苹果音乐我喜欢的歌在哪里(苹果音乐我喜欢的歌)

  • 荣耀手机怎么关闭防误触功能(荣耀手机怎么关闭纯净模式)

    荣耀手机怎么关闭防误触功能(荣耀手机怎么关闭纯净模式)

  • 华为荣耀10青春版几寸(华为荣耀10青春版)

    华为荣耀10青春版几寸(华为荣耀10青春版)

  • 苹果手机查找不可用,无法连接服务器(苹果手机查找不到wifi是怎么回事)

    苹果手机查找不可用,无法连接服务器(苹果手机查找不到wifi是怎么回事)

  • 淘宝发布的问大家怎么没有显示(淘宝发出的提问在哪找)

    淘宝发布的问大家怎么没有显示(淘宝发出的提问在哪找)

  • 荣耀x10pro上市时间(荣耀x10pro售价)

    荣耀x10pro上市时间(荣耀x10pro售价)

  • 组装一台计算机需要什么(组装一台计算机需要哪些硬件设备)

    组装一台计算机需要什么(组装一台计算机需要哪些硬件设备)

  • qq超级会员可以退费吗(qq超级会员可以恢复多久的好友)

    qq超级会员可以退费吗(qq超级会员可以恢复多久的好友)

  • 回收站中的文件可以改名吗(如何还原回收站中的文件)

    回收站中的文件可以改名吗(如何还原回收站中的文件)

  • 被好友删除了怎么加回(被好友删除了怎么删除验证消息)

    被好友删除了怎么加回(被好友删除了怎么删除验证消息)

  • e980什么处理器(ex980是什么处理器)

    e980什么处理器(ex980是什么处理器)

  • 抖音上怎么剪辑短视频(抖音上怎么剪辑视频教程)

    抖音上怎么剪辑短视频(抖音上怎么剪辑视频教程)

  • frd-al00是华为什么型号(frd-al00什么型号)

    frd-al00是华为什么型号(frd-al00什么型号)

  • vivox30pro什么时候发布(新款vivox30pro)

    vivox30pro什么时候发布(新款vivox30pro)

  • 鸿蒙系统是基于安卓吗(鸿蒙系统基于安卓开发的吗)

    鸿蒙系统是基于安卓吗(鸿蒙系统基于安卓开发的吗)

  • ps怎么后退多步(ps2018怎么后退多步)

    ps怎么后退多步(ps2018怎么后退多步)

  • 抖音怎么一键清除喜欢(抖音怎么一键清理关注的人)

    抖音怎么一键清除喜欢(抖音怎么一键清理关注的人)

  • 嘀嗒提现多久到账(嘀嗒提现多久到银行卡)

    嘀嗒提现多久到账(嘀嗒提现多久到银行卡)

  • 电话显示未接通什么意思(电话直接显示未接)

    电话显示未接通什么意思(电话直接显示未接)

  • 淘宝被投诉盗图扣几分(淘宝被投诉盗图怎么办没有原图也可申诉成功)

    淘宝被投诉盗图扣几分(淘宝被投诉盗图怎么办没有原图也可申诉成功)

  • 系统相机时间怎么修改(怎样设置相机时间)

    系统相机时间怎么修改(怎样设置相机时间)

  • 为什么响两声说通话中(为什么喊两声)

    为什么响两声说通话中(为什么喊两声)

  • 苹果探探怎么没了(苹果探探为什么登不了)

    苹果探探怎么没了(苹果探探为什么登不了)

  • 小米9怎么设置防口袋触碰(小米9怎么设置老人模式)

    小米9怎么设置防口袋触碰(小米9怎么设置老人模式)

  • Mac怎么查询UUID信息? 硬盘接口类型的查询方法(mac怎么查询是不是正品)

    Mac怎么查询UUID信息? 硬盘接口类型的查询方法(mac怎么查询是不是正品)

  • 腾讯电脑管家中一键加速是什么?(腾讯电脑管家中如何安装 文件夹上锁专家)

    腾讯电脑管家中一键加速是什么?(腾讯电脑管家中如何安装 文件夹上锁专家)

  • 出口退税分类管理办法最新
  • 减免税款的会计分录在什么时候处理
  • 唐朝的两税法是什么
  • 用银行存款支付罚款
  • 微信提现手续费最新规定
  • 餐饮业购买餐桌椅会计分录
  • 借调员工的工资怎么入账
  • 劳务公司差额征税怎么计算
  • 员工出差报销制度
  • 如果月初忘记抄税直接开票怎么办
  • 发生的费用发票会计分录
  • 端午节给员工发福利说什么
  • 发票分割单可以抵扣吗
  • 年末提取盈余公积的会计分录怎么写
  • 增值税发票过期未抵扣怎么办
  • 苹果电脑安装中国银行控件用不了
  • win7文件打开方式选错了如何恢复
  • 旧macbookpro
  • 腾讯手游助手使命召唤怎么滑铲
  • 电脑开机显示怎么取消?
  • 传递优化的作用
  • PHP:mb_strrpos()的用法_mbstring函数
  • 2017年新准则下,收入确认的金额应是
  • 债券转换为普通债权
  • 银行存款收款凭证属于什么凭证
  • jquery编程
  • 极路由怎么用
  • php去除指定字符
  • PHP如何使用资源路由方式改进新闻管理
  • 银行承兑汇票贴现率是多少
  • 科罗拉多河上的月光简谱
  • 前端cli搭建
  • Yii CFileCache 获取不到值的原因分析
  • ai数字绘画设计培训
  • addr指令
  • php定义方法
  • ssl查询网站
  • 资产负债表其他应收款计算公式
  • 将10万元存款投入企业的会计分录
  • 年收入1500万是富人吗
  • 一般纳税人给小规模开普票的税率
  • 银行结算方式有哪几种方式?其具体内容是什么?
  • 外聘人员差旅费怎么做账
  • 应收票据和其他应收款的区别
  • 无形资产是有在期资产吗
  • SQL Server中的XML数据进行insert、update、delete操作实现代码
  • sql server 2005数据迁移
  • sql server数据库怎么使用
  • 社保局退的工伤保险怎么记账
  • 未入账负债怎么算
  • 购入固定资产怎么抵扣企业所得税
  • 纳税人将购买的货物分配给股东,因该货物购买时已缴纳
  • 房屋租赁费可以加计扣除吗
  • 现在增值税是多少个点
  • 买车险要先付钱再上牌吗
  • 汽车折旧年限与折旧率
  • 外贸企业留抵退税申请表怎么填
  • 如何操作开具红字发票
  • 成本增加比例怎么算的
  • 会计的凭证怎么做账
  • 商品流通企业如何控成本
  • mysql 5.7.13 winx64安装配置方法图文教程
  • window怎么样
  • won10怎么安装
  • cmos是一种什么芯片
  • 电脑连接宽带时出错怎么办
  • Win10 Insider 10565去除快捷方式小箭头的方法
  • win10系统开机蓝屏怎么修复
  • linux忘记root密码怎么办
  • win8.1一直开机,无法进入主界面
  • win7系统如何添加打印机
  • pdf在电脑上打开
  • js组件是什么
  • svn服务端启动
  • js中的隐式类型转换
  • python module import
  • 查找阴历日历
  • 四川国税网上申报
  • 怎样在中国税务用手机交社保
  • 职业年金利息计入哪个科目里面
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设