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

  • 小米手环亮度怎么调高(小米手环亮度怎么调高一点)

    小米手环亮度怎么调高(小米手环亮度怎么调高一点)

  • 只知道微信名可以加好友吗(只知道微信名可以起诉吗)

    只知道微信名可以加好友吗(只知道微信名可以起诉吗)

  • 云计算是什么意思(云计算是什么意思?四年级)

    云计算是什么意思(云计算是什么意思?四年级)

  • qq空间视频一直转码怎么办(qq空间视频一直显示转码中怎么删除)

    qq空间视频一直转码怎么办(qq空间视频一直显示转码中怎么删除)

  • 什么是串行异步通信(串行异步通信的概念)

    什么是串行异步通信(串行异步通信的概念)

  • 自己手机账号是什么(手机账号是电话号码吗)

    自己手机账号是什么(手机账号是电话号码吗)

  • win准备就绪转圈圈(windows 准备就绪 转圈)

    win准备就绪转圈圈(windows 准备就绪 转圈)

  • QQ怎么设置拒绝添加好友(qq怎么设置拒绝别人拉我进群)

    QQ怎么设置拒绝添加好友(qq怎么设置拒绝别人拉我进群)

  • airpods2正确充电方法(airpods 2如何充电)

    airpods2正确充电方法(airpods 2如何充电)

  • 华为nova7se时间设置在哪里(华为nova7se时间怎么设置24小时制)

    华为nova7se时间设置在哪里(华为nova7se时间怎么设置24小时制)

  • 华为手机下面3个按键在哪里设置显示(华为手机下面3个按键如何设置)

    华为手机下面3个按键在哪里设置显示(华为手机下面3个按键如何设置)

  • 快手通过私信添加是什么意思(快手私信添加好友)

    快手通过私信添加是什么意思(快手私信添加好友)

  • 为什么笔记本连上手机热点却上不了网(为什么笔记本连上wifi却没有网)

    为什么笔记本连上手机热点却上不了网(为什么笔记本连上wifi却没有网)

  • 进程由程序什么和什么组成(程序的进程)

    进程由程序什么和什么组成(程序的进程)

  • 苹果手机能用蓝牙传图片吗(苹果手机能用蓝牙传软件吗)

    苹果手机能用蓝牙传图片吗(苹果手机能用蓝牙传软件吗)

  • 国内微信在国外能用吗(国内微信在国外用,出现)

    国内微信在国外能用吗(国内微信在国外用,出现)

  • 天猫精灵ccl怎么恢复出厂设置(天猫精灵CCL怎么下载钉钉吗)

    天猫精灵ccl怎么恢复出厂设置(天猫精灵CCL怎么下载钉钉吗)

  • 手机微博怎么换背景(手机微博怎么换行排版)

    手机微博怎么换背景(手机微博怎么换行排版)

  • 手机如何设置时间(手机如何设置时间提醒功能)

    手机如何设置时间(手机如何设置时间提醒功能)

  • 主屏分辨率越大越好吗(主屏幕分辨率大好还是小好)

    主屏分辨率越大越好吗(主屏幕分辨率大好还是小好)

  • 红米k20pro可以插内存卡吗(红米k20pro支持usb3.1吗)

    红米k20pro可以插内存卡吗(红米k20pro支持usb3.1吗)

  • 小米8拍星星要怎么调(小米8拍星星要开灯吗)

    小米8拍星星要怎么调(小米8拍星星要开灯吗)

  • 电脑装两个固态会快吗(电脑装两个固态硬盘还是一个固态一个机械)

    电脑装两个固态会快吗(电脑装两个固态硬盘还是一个固态一个机械)

  • 笔记本电脑end键在哪(笔记本电脑end键在哪里)

    笔记本电脑end键在哪(笔记本电脑end键在哪里)

  • 手机打不了电话(手机打不了电话但是可以用流量)

    手机打不了电话(手机打不了电话但是可以用流量)

  • xr充满电要多久(苹果xr充电多久可以满)

    xr充满电要多久(苹果xr充电多久可以满)

  • 猎豹安全大师如何开启高级保护(猎豹安全大师4.3.2.1011)

    猎豹安全大师如何开启高级保护(猎豹安全大师4.3.2.1011)

  • Word无法创建工作文件(word无法创建工作环境)

    Word无法创建工作文件(word无法创建工作环境)

  • 对方公司为什么一定要专票
  • 公司购入烟酒会计处理
  • 在业跟续存有什么不一样
  • 利息资本化计入什么现金流量科目
  • 如何开小加工厂
  • 中国电子口岸证书错误
  • 出差租车费用报销标准
  • 个人购买商铺如何缴税
  • 中期票据怎么入账
  • 伤亡保险是什么意思
  • 认缴制下实收资本印花税
  • 存货周转天数一般在多少为合适
  • 成本票最多开多少
  • 税号里的字母要大写还是小写
  • 长期待摊费用属于什么科目借贷方向
  • 红字发票通知单已经上传可以作废吗
  • 残保金和工会经费需要计提吗
  • 销售库存商品会引起收入增加吗
  • 公司的资本成本取决于投资人的必要报酬率
  • 公司奖励金怎么做记账凭证?
  • 固定资产清理账户结构
  • led电子屏税收编码
  • 制造费用的低值易耗品包括哪些内容
  • 增值税发票的作用
  • wifi网速太慢了怎么回事
  • 磁盘使用量30m
  • 怎么看iPhone电池温度
  • 如何在电子税务局添加开票人
  • linux设置壁纸的命令
  • 企业雇佣临时工的工资属于工资薪金支出么
  • php和py
  • 黑枣的功效与作用图片
  • PHP:is_uploaded_file()的用法_Filesystem函数
  • php静态页面实现搜索功能
  • Prometheus告警规则配置
  • flex布局使用
  • 应收票据其他应收款都需要提取坏账准备么
  • .net core中间件原理
  • js面试2021
  • 知识图谱的构建方法有两种
  • 新准则下担保企业有哪些
  • 其他综合收益转入留存收益还是投资收益
  • 走工资支付福利怎么算
  • python包发布
  • 织梦是啥
  • 所有者权益的确认依附于什么的确认
  • 产品成本计算的分类法适用于( )
  • 银行借记和贷记一样吗
  • SQL Server中的XML数据进行insert、update、delete操作实现代码
  • 劳务外包人员算从业人员期末人数么
  • mysql的环境配置
  • 当月业务的发票可以次月开吗
  • 个体工商户经营所得税核定征收
  • 对外销售产品会计分录
  • 有限合伙企业协议
  • 银行付款退回重付怎么办
  • 装修费用摊销计入什么科目
  • 公司新产品研发上市的意义和价值
  • mysql复杂数据查询方法
  • doc怎么使用
  • fedora29
  • 其他操作系统类型
  • win102009发布日期
  • win10系统共享打印机无法访问怎么解决
  • win10系统怎么调整字体大小
  • linux退出telnet服务
  • win8关闭uac
  • win8禁用网络之后如何开启
  • python数据结构教程
  • jquery轮播代码
  • jQuery Password Validation密码验证
  • linux怎么使用
  • JavaScript中的变量名不区分大小写
  • jQuery使用getJSON方法获取json数据完整示例
  • js prototype constructor
  • python环境及基础语法
  • 留抵退税退回的款如何做账
  • 划拨土地是否可以出租的法律规定
  • 云票助手怎么查看开票限额
  • 所得税汇算清缴退税税务局要来查账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设