位置: IT常识 - 正文

uview2.0封装http请求实战以及常见请求传参实录

发布时间:2023-12-30
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什么意思)

  • 小黄车共享单车怎么使用(小黄车共享单车app找不到了)

    小黄车共享单车怎么使用(小黄车共享单车app找不到了)

  • 万网域名赎回是什么意思(赎回域名那么贵)

    万网域名赎回是什么意思(赎回域名那么贵)

  • 苹果6sp屏幕尺寸多大(苹果6sp屏幕尺寸多长)

    苹果6sp屏幕尺寸多大(苹果6sp屏幕尺寸多长)

  • 红米k20pro前置摄像头弹出失败(红米k20pro前置摄像头维修价格)

    红米k20pro前置摄像头弹出失败(红米k20pro前置摄像头维修价格)

  • 短信已存入草稿如何找(短信已存入草稿怎么删除)

    短信已存入草稿如何找(短信已存入草稿怎么删除)

  • EXCEL怎么设置行高和列宽自动调整(excel怎么设置行高和列宽)

    EXCEL怎么设置行高和列宽自动调整(excel怎么设置行高和列宽)

  • 华为b5怎么接听电话(华为b5怎么接听语音电话)

    华为b5怎么接听电话(华为b5怎么接听语音电话)

  • ios13.4.1可以降级吗(ios13.4降级13.3.1)

    ios13.4.1可以降级吗(ios13.4降级13.3.1)

  • QQ校园扩列怎么关闭(qq校园扩列怎么设置)

    QQ校园扩列怎么关闭(qq校园扩列怎么设置)

  • 抖音名字怎么改不了(抖音名字怎么改不了保存不了)

    抖音名字怎么改不了(抖音名字怎么改不了保存不了)

  • qq的校园扩列怎么设置(qq校园扩列怎么不见了)

    qq的校园扩列怎么设置(qq校园扩列怎么不见了)

  • 小米9信号不稳定经常无信号(小米信号不稳定怎么回事,一会儿H+以后4G)

    小米9信号不稳定经常无信号(小米信号不稳定怎么回事,一会儿H+以后4G)

  • 手机自带计算器删除了怎么找回来(手机自带计算器怎么恢复)

    手机自带计算器删除了怎么找回来(手机自带计算器怎么恢复)

  • 微信运动时间可改吗(微信运动可以屏蔽某个人吗)

    微信运动时间可改吗(微信运动可以屏蔽某个人吗)

  • 手机怎么设置微信步数(手机怎么设置微信来信息不显示内容)

    手机怎么设置微信步数(手机怎么设置微信来信息不显示内容)

  • 抖音开小店的条件(抖音开小店的条件是什么)

    抖音开小店的条件(抖音开小店的条件是什么)

  • oppo的呼吸灯在哪里(oppo呼吸灯在哪里调)

    oppo的呼吸灯在哪里(oppo呼吸灯在哪里调)

  • 怎么判断手机是否被挖矿(怎么判断手机是不是模型机)

    怎么判断手机是否被挖矿(怎么判断手机是不是模型机)

  • 硬盘怎么连接电脑(硬盘怎么连接电脑使用)

    硬盘怎么连接电脑(硬盘怎么连接电脑使用)

  • win10闹钟如何休眠仍然响(win10闹钟设置方法)

    win10闹钟如何休眠仍然响(win10闹钟设置方法)

  • 大型喜加一,微软 Win11 应用商店上架 Epic 游戏商城(喜加一平台)

    大型喜加一,微软 Win11 应用商店上架 Epic 游戏商城(喜加一平台)

  • CoverDesigner.exe是一个安全进程吗 CoverDesigner进程查询

    CoverDesigner.exe是一个安全进程吗 CoverDesigner进程查询

  • nicconfigsvc.exe - nicconfigsvc是什么进程 有什么用

    nicconfigsvc.exe - nicconfigsvc是什么进程 有什么用

  • vue-router中的参数传递(vue route 参数)

    vue-router中的参数传递(vue route 参数)

  • ECharts 引入中国地图和区域地图(echarts怎么引入)

    ECharts 引入中国地图和区域地图(echarts怎么引入)

  • 增值税发票验真伪怎么验
  • 支付给员工的工资属于什么科目
  • 消费税和所得税的关系
  • 土地使用税怎么征收标准
  • 申报个税时怎么获取个税专项附加扣除
  • 公司内部个人股份怎么算
  • 未开票收入以后必须开票吗
  • 固定资产在现金流量表中的体现
  • 跨年度费用报销违反什么规定
  • 增值税期末留抵退税政策实施力度
  • 外购商品对外捐赠分录
  • 内部资金往来科目
  • 工程预付款包括工人工资吗
  • 物流公司赔付款会计分录
  • 报价表含税点是什么意思?
  • 开专用发票可以不写单位与型号么?
  • 保险代理的佣金怎么算
  • 商贸公司购买货物会计分录
  • 企业购买理财产品的会计分录
  • 个税申报时个人怎么填
  • 诉讼费做账科目
  • 出纳交接工作注意
  • 无形资产入账包括增值税吗
  • win10系统中为什么网络图标不能展开
  • 常见的无线网络技术有
  • php操作json文件
  • win11启动方式
  • 企业公益性捐赠扣除限额
  • 城建税教育费附加和地方教育费附加税率
  • 前端页面默认字体
  • php反序列化漏洞原理
  • command对象可以执行sql语句吗
  • vue3动态路由权限
  • javascript数据类型
  • php上传文件限制大小
  • php设置header参数
  • ajax调用php接口
  • 工业企业成本核算的一般程序
  • 上个月没有开票需要清卡吗
  • 大额医疗保险计入什么科目
  • 为什么应交增值税要转入未交增值税
  • 企业会计准则和企业会计制度的区别
  • 计提工会经费会计凭证怎么做分录
  • 主营业务利润和利润总额
  • 固定资产的更新改造支出计入什么科目
  • 到银行提取备用金
  • 在建工程的成本包括应交增值税吗
  • 交易性金融资产入账价值怎么计算
  • 无票收入如何做凭证
  • 季度末需要结转本年利润吗
  • 自然人可以申请一般纳税人吗
  • 多缴附加税款账务处理
  • 研发费用会影响什么
  • 资产负债表中的固定资产是原值还是净值
  • 上市公司应付会计
  • 成本会计难做吗没做过
  • sqlserver存储过程在哪里
  • win10怎么设置为win7模式
  • ubuntu /opt
  • fedora怎么安装软件
  • 硬盘安装fedora35
  • 微软系统win10
  • win8.1笔记本
  • ubuntu 18.04怎么用
  • win7系统安装的配置要求有什么
  • linux大于符号
  • centos创建一个文件
  • win7系统如何关闭开机自动启动软件
  • win8怎么设置
  • linux扩充inode
  • win10的帮助系统在哪
  • js字符串includes
  • dropdownlist绑定数据
  • python os.access
  • 自动搜索工具
  • nodejs例子
  • 智能图片制作
  • js中new操作符工作原理
  • 陕西地税发票怎么重新打印
  • 城市配套费需要缴纳契税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号