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

  • 倒数日如何在桌面显示(倒数日如何在桌面显示苹果)

    倒数日如何在桌面显示(倒数日如何在桌面显示苹果)

  • 苹果13面部解锁后怎么直接进入桌面(苹果13面部解锁怎么设置)

    苹果13面部解锁后怎么直接进入桌面(苹果13面部解锁怎么设置)

  • 小米mix2有红外遥控吗(小米mix2有红外嘛)

    小米mix2有红外遥控吗(小米mix2有红外嘛)

  • 奔腾g5400相当于i5几代(奔腾g5400相当于i几)

    奔腾g5400相当于i5几代(奔腾g5400相当于i几)

  • 小米手环4无法获取音乐(小米手环4无法开机怎么办)

    小米手环4无法获取音乐(小米手环4无法开机怎么办)

  • macbookpro怎么看国家版本(macbookpro怎么看是哪一年)

    macbookpro怎么看国家版本(macbookpro怎么看是哪一年)

  • 处理器带h是什么意思(处理器后面的字母h是什么意思)

    处理器带h是什么意思(处理器后面的字母h是什么意思)

  • 苹果手机不插卡能用吗(苹果手机不插卡能定位吗)

    苹果手机不插卡能用吗(苹果手机不插卡能定位吗)

  • 苹果手机上方时间蓝色(苹果手机上方时间电量图标怎么变小)

    苹果手机上方时间蓝色(苹果手机上方时间电量图标怎么变小)

  • app store不见了怎么找回(app store不见了怎么弄回来)

    app store不见了怎么找回(app store不见了怎么弄回来)

  • 手机拍视频模糊怎么回事(手机拍视频模糊不清,怎么才能弄好?)

    手机拍视频模糊怎么回事(手机拍视频模糊不清,怎么才能弄好?)

  • mpgt2ch a是ipad几代(ipadmpgt2ch/a什么版本)

    mpgt2ch a是ipad几代(ipadmpgt2ch/a什么版本)

  • vivosim卡设置在哪里(vivosim卡设置在哪里联系人)

    vivosim卡设置在哪里(vivosim卡设置在哪里联系人)

  • iphone怎么拍夜景好看(iphone怎么拍夜景可以不散光)

    iphone怎么拍夜景好看(iphone怎么拍夜景可以不散光)

  • vivox9有sos功能吗(vivo手机有sos功能吗)

    vivox9有sos功能吗(vivo手机有sos功能吗)

  • wps表格怎么批量减法(wps表格怎么批量调整行高和列宽)

    wps表格怎么批量减法(wps表格怎么批量调整行高和列宽)

  • 笔记本怎么格式化(笔记本怎么格式化清除所有数据)

    笔记本怎么格式化(笔记本怎么格式化清除所有数据)

  • 手机卡销户微信怎么办(手机卡销户微信登不上怎么办)

    手机卡销户微信怎么办(手机卡销户微信登不上怎么办)

  • 照片显示时间(照片显示时间怎么设置)

    照片显示时间(照片显示时间怎么设置)

  • 微信百万保障怎么取消(微信百万保障怎么解除绑定)

    微信百万保障怎么取消(微信百万保障怎么解除绑定)

  • b站视频下载在哪(b站视频下载在哪找)

    b站视频下载在哪(b站视频下载在哪找)

  • v1838a是什么型号(v18311是什么型号)

    v1838a是什么型号(v18311是什么型号)

  • 6g和8g手机区别在哪(6g和8g手机的区别)

    6g和8g手机区别在哪(6g和8g手机的区别)

  • iphone怎样防止误删应用app(苹果手机怎么防止误碰)

    iphone怎样防止误删应用app(苹果手机怎么防止误碰)

  • win10工作站版和专业版哪个流畅(win10工作站版和企业版的区别)

    win10工作站版和专业版哪个流畅(win10工作站版和企业版的区别)

  • tcpreplay命令  性能或功能测试(tcpreplay命令详解)

    tcpreplay命令 性能或功能测试(tcpreplay命令详解)

  • 最新个税手续费返还会计分录小规模纳税人
  • 小企业会计准则适用于哪些企业
  • 应交税费转营业外支出
  • 所得税可以弥补几年
  • 不动产租赁开票税目
  • 个人社保信息变更
  • 售后维修收入怎么入账
  • 减免水利基金政策
  • 会计记账凭证如何填制
  • 坏账计提坏账准备
  • 普通折叠发票代码是几位数
  • 公司已倒闭
  • 一般纳税人能否开3%的普票
  • 用友软件冲销凭证是什么意思
  • 什么费用计入什么科目
  • 公司付给职工的工资
  • 资产负债表年初余额是不是一直不变
  • 简易计征的税率
  • 营改增的优惠政策
  • 增值税专用发票电子版
  • 新成立的公司每天付款有要求吗
  • 饭店试菜费用如何计算
  • 工程分包是什么工作
  • 申报表作废后怎么显示的是已申报,不能重新申报
  • 业主委员会的收益
  • 应退税款抵扣欠缴税款
  • 节能减排奖励资金追回
  • 17%和6%的票能直接抵扣吗?
  • 决算帐表不相符怎么处理
  • 如何保护excel表格不被打开
  • 电脑管家怎么检测
  • 企业取得财政拨款怎么算
  • 科技推广和应用服务业
  • 其他业务收入跨年调账
  • 个税扣除项怎么扣除
  • win11怎么清理电脑垃圾
  • php生成zip压缩包
  • uniapp引入全局scss
  • 汽车维修收费标准及费用计算方法
  • 非洲加纳霍霍埃族是个国家吗
  • react中路由有哪些常用组件
  • 挖机出租给公司
  • php redis使用
  • windows安装php运行环境
  • 双分录怎么做
  • vue3的unplugin-auto-import自动引入
  • ssh命令用法
  • 如何测试php
  • 销售精装修房如何做账
  • 报建费减免
  • 未开票收入缴纳增值税做账
  • 代扣代缴增值税附加税减免政策
  • 关联企业的费用包括
  • sql如何查询某个表的列名
  • 专项基金是什么
  • 软件公司会计科目
  • 小企业汇算清缴补税会计分录
  • 认证固定资产发票如何入账
  • 稳定用工社保补贴怎么领
  • 免抵税额和免抵退税额一样吗
  • 企业处理原材料会计分录
  • sqlserver 临时表 准备
  • hyper-v虚拟机无法初始化
  • window怎么操作
  • win10预览版21277下载
  • 轻松玩转职场职场沟通与写作技巧答案
  • wp7.8升级wp8
  • Ubuntu 16.04 Server Edition 英文版安装教程
  • linux date-u
  • centos基础命令
  • win8取消开始界面
  • javascriptcsdn
  • 黑客需要学哪些
  • nodejs读取文件夹下的所有文件
  • node.js模块
  • Python cx_freeze打包工具处理问题思路及解决办法
  • Linux开发基于Qt的Android应用指定调试设备
  • 购车发票包含
  • 外经证注销网上操作
  • 广东电子税务局官网登录入口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设