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

  • 小米pay怎么支付(小米pay支付不用指纹)

    小米pay怎么支付(小米pay支付不用指纹)

  • ps是什么意思(ps是什么意思医学)

    ps是什么意思(ps是什么意思医学)

  • 手机屏幕摔了有彩色斑(手机屏幕摔了有裂痕怎么办)

    手机屏幕摔了有彩色斑(手机屏幕摔了有裂痕怎么办)

  • 淘宝退款对买家有影响吗(淘宝退款买家未举证怎么处理)

    淘宝退款对买家有影响吗(淘宝退款买家未举证怎么处理)

  • 无法激活面容ID怎么办(无法激活面容id有几种情况)

    无法激活面容ID怎么办(无法激活面容id有几种情况)

  • 小米路由器3支持200m光纤吗(小米路由器3支持mesh吗)

    小米路由器3支持200m光纤吗(小米路由器3支持mesh吗)

  • 打电话显示网上未注册(打电话显示网上来电)

    打电话显示网上未注册(打电话显示网上来电)

  • mt7tl10什么型号(mt7 tl00)

    mt7tl10什么型号(mt7 tl00)

  • 钉钉直播可以看到本人吗(钉钉直播可以看回放吗)

    钉钉直播可以看到本人吗(钉钉直播可以看回放吗)

  • 官换机型号m开头还是n(官换机型号有m开头的吗)

    官换机型号m开头还是n(官换机型号有m开头的吗)

  • 1000kbps的网速是几兆(1000kb网速快吗)

    1000kbps的网速是几兆(1000kb网速快吗)

  • 苹果ipad屏幕点不动怎么办(苹果ipad屏幕点不动无法强制关机)

    苹果ipad屏幕点不动怎么办(苹果ipad屏幕点不动无法强制关机)

  • 表格打开后看不到内容(表格打开后看不到内容但是预览可以)

    表格打开后看不到内容(表格打开后看不到内容但是预览可以)

  • 淘宝怎么取消抢购提醒(淘抢购怎么取消)

    淘宝怎么取消抢购提醒(淘抢购怎么取消)

  • 微信朋友圈相册封面怎么弄成视频(微信朋友圈相册封面怎么对人隐藏)

    微信朋友圈相册封面怎么弄成视频(微信朋友圈相册封面怎么对人隐藏)

  • 苹果11打字声音怎么设置(苹果11打字声音忽大忽小怎么回事)

    苹果11打字声音怎么设置(苹果11打字声音忽大忽小怎么回事)

  • 怎样找回原来的京东账号(怎样找回原来的微信群)

    怎样找回原来的京东账号(怎样找回原来的微信群)

  • 手机淘宝如何领金币(手机淘宝怎样领劵)

    手机淘宝如何领金币(手机淘宝怎样领劵)

  • 手机视频怎么传到u盘(手机视频怎么传到u盘里)

    手机视频怎么传到u盘(手机视频怎么传到u盘里)

  • ipadpro有3dtouch吗(ipadpro2020有没有3dtouch)

    ipadpro有3dtouch吗(ipadpro2020有没有3dtouch)

  • 蚂蚁森林能量成熟时间(蚂蚁森林能量成熟提醒在哪里设置)

    蚂蚁森林能量成熟时间(蚂蚁森林能量成熟提醒在哪里设置)

  • 红米note4x支持快充吗

    红米note4x支持快充吗

  • 华为分享是什么意思详情(华为分享是什么意思关闭有影响吗)

    华为分享是什么意思详情(华为分享是什么意思关闭有影响吗)

  • LimeWire.exe进程文件介绍  LimeWire进程查询(replace.exe进程)

    LimeWire.exe进程文件介绍 LimeWire进程查询(replace.exe进程)

  • phpcms如何生成静态页面(cms静态页面生成原理)

    phpcms如何生成静态页面(cms静态页面生成原理)

  • 海关完税价格计算公式
  • 关联企业的判定标准
  • 会计凭证借贷方向
  • 计提税金及附加会计分录
  • 纳税调整会计处理
  • 物业管理服务增值税2022
  • 印花税按合同的多少收
  • 向境外支付赔偿金需要发票么
  • 代扣代缴完税凭证 要勾选吗
  • 驾驶员行车补贴开什么发票
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 我们应该怎么做才能成功
  • 怎么从银行买承兑汇票
  • 企业固定资产职称是什么
  • 预提费用入账依据
  • 分支机构多预缴应该怎么退税呢?
  • 房地产预缴增值税是含税还是不含税
  • 出口退税可以用电子专用发票吗
  • 金三打印客户端插件如何下载?
  • 股权转让过程中需要注意哪些问题
  • 新成立的公司季报
  • 普票开错了能退税吗
  • 营业外收入可以在借方吗
  • 事业单位没有税号 选个人可以吗
  • 企业银行存款账户核算的内容有
  • 纳税人不得汇总开具发票
  • 增值税步骤
  • 民宿的房屋租赁合同模板
  • 项目的投入资金预算表
  • 企业的无形资产有哪些
  • 冲未开票收入怎么做分录
  • 转包工程款怎么结算
  • 收到折扣负数发票如何入账
  • 补充医疗税前扣除还是税后扣除
  • dir852迅雷路由器
  • hp是什么代码
  • 企业所得税会计利润
  • 一般合同怎么写才有效
  • php php.ini
  • php ioc
  • 前端页面设计
  • 你还没等于几
  • 应交税费的进项税和销项税
  • 销售费用占销售成本比例
  • 合同印花税可以年底报一次
  • 公司申报是每月一次吗
  • 普通发票添加货品名称步骤
  • 编写脚本语言
  • 公司小规模纳税人转为一般纳税人,需要签补充协议吗
  • 高铁票该怎么申领
  • 鲜花虫草开发票属于什么类别?
  • MySQL数据库远程登录
  • 营利性与非营利性的关系
  • 公司之前借款没入账现在还款
  • 会计凭证的做账原则
  • 国有资产保值增值率
  • 公司跟员工的往来协议
  • 接受捐赠的固定资产计入什么科目
  • 社保逾期滞纳金和利息
  • 开具发票的单位名称与实际收款不一致?
  • 收据能不能入账账户
  • 资产负债表各项目占比
  • 土地出让的钱归谁
  • surface rt升级win10详细教程
  • 笔记本摄像头摄像
  • mac视频预览图不显示
  • VMware虚拟机下载
  • 你需要windows7sp1才能安装ie11
  • unity协程yield
  • opengl教程48讲
  • js中iframe
  • css选择器 菜鸟教程
  • python数值计算基础
  • pygame如何加载图片
  • unity 3d online document
  • 12366人工服务时间节假日上班吗
  • 税务税收预测
  • 海口市地方税务局是什么级别
  • 转卖车位土地增值税税率
  • 税务征管科与纳税人有接触吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设