百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

【uniapp】十分钟带你封装uniapp的api请求

liuian 2025-01-17 12:18 56 浏览

封装前的准备

先在项目目录上右键 - 新建目录(用于存放封装的API请求文件)

  • 名称大家可以随意取,我这里给的是request

目录新建完成之后,还需要至少两个js文件

  • index.js 封装get、post请求,接收参数并返回数据
  • api.js 封装后台接口,便于页面调用和后期维护

为啥这里说的是至少两个js文件呢?那是因为可能因为权限的原因,亦或者模块的分类等,可以把api.js文件给拆分出去,按照不同的权限、模块来进行分类,最终可以通过一个总的js文件合并,这样更利于后期维护。

封装第一步:index.js

定义请求参数

  • 必备参数:url、method、header、data
  • 可选参数:hideLoading
  • export default class Request {
http(param) {
let url = param.url;
let method = param.method;
let header = param.header || {};
let data = Object.assign(param.data || {});
let hideLoading = param.hideLoading || false;
// 第一步的代码均在此处展示,后面示例代码就不写外层 class 和 http方法了。
....
}
}
  • hideLoading主要是后面用于显示加载toast状态的

请求地址

  • 其实请求地址可以单独封装成一个js文件的,比如开发环境、正式环境、测试环境都用不同的请求地址。
let requestUrl = 'https://www.juejin.cn/' + url;

请求方式

  • 此处仅封装GET、POST两种方式,其他的请求方式可以根据需求去进行封装
if (method) {
if (method == "POST") {
header = Object.assign({
'content-type': "application/x-www-form-urlencoded"
}, param.header)
} else {
header = Object.assign({
'content-type': "application/json"
}, param.header)
}
}
  • method参数必须是大写的哦~(微信小程序和uniapp均有文档查阅)
  • 将content-type和用户传递的header数据进行合并,组成一个新的header参数

请求加载(这里是可选的配置项)

  • 数据配置完成后,可以给用户一个loading的等待效果
if (!hideLoading) { uni.showLoading() }

返回Promise

  • 通过promise返回数据,可以在页面上请求接口的时候,直接使用.then来拿到数据(也算是目前前端常用的写法了吧)
return new Promise((resolve, reject) => {
uni.request({
url: requestUrl,
data: data,
method: method,
header: header,
success: (res) => {
// 下面会直接写请求成功的代码
......
},
fail: (err) => {
// 下面会直接写请求失败的代码
......
},
})
})
  • 在promise中写上请求方法,并接收上面定义的参数
// success里面的逻辑代码
// 如果有显示loading的话,可以在这里选择隐藏
if (!hideLoading) {
uni.hideLoading();
}
// 判断请求是否成功(通过后端接口返回的状态进行判断)
// code:0 即成功,不为 0 的话就是请求错误/失败
if(res.data.code === 0){
resolve(res.data)
return true
} else {
if(res.data.code === -1){
// 这里是由于token过期导致的错误码
// 可以直接跳转到login页面,也可以直接刷新token
uni.navigateTo({
url: '/pages/login/login'
})
}
// 其他错误时,直接通过toast提示
uni.showToast({
title:res.data.msg,
icon:'none'
})
return false;
}
// fail里面的逻辑代码
// 如果有显示loading,同样需要隐藏
if (!hideLoading) {
uni.hideLoading();
}
return false;

封装第二步:api.js

引用封装好的index.js文件

import Request from './index.js' let request = new Request().http

get、post请求方法

function get(url, data, hideLoading, header) {
return request({
url: url,
method: 'GET',
data: data,
header: header
})
}

function post(url, data, hideLoading, header) {
return request({
url: url,
method: 'POST',
data: data,
header: header,
hideLoading: hideLoading,
})
}

封装api对象

  • 通过上面的方法,来确定请求类型
let api = {
login: data => post('loginapi', data, true, true)
}

export default api;
  • 为了能够在全局进行使用,需要在main.js文件中进行配置
  • $http是自定义名称,可以根据自己的需要去修改
  • 在引入文件中,我们只需要引入api.js即可
import api from "./request/api.js"
Vue.prototype.$http = api;

使用方法

onLoad(){
this.$http.login().then(res=>{
console.log(res)
})
}
  • 在页面上使用的时候,直接通过this.$http找到对应的api方法
  • 如果需要传参,可以在login方法中直接传递login({name: 'xxx', sex: 'yyy'})

总结

在uniapp中封装请求方法,其实和vue里面的axios封装方式差不多,通过一次封装,改变之后的开发模式和维护成本是很重要的。

由于兼职的后端还没开始写接口,所以就不在这里展示具体的请求数据了,大家可以自行尝试一下。

原文链接:
https://juejin.cn/post/7249228528573694013

相关推荐

内存不够用了怎么办(内存不够用了怎么办手机)

我们的手机在使用过程中,会产生各种各样的垃圾和缓存文件,这些东西占据了很大的内存空间,所以我们平时需要定期清理这些垃圾文件。安卓的手机基本都自带手机管家类型的APP,我们可以利用这类APP实现清理垃圾...

联想电脑怎么连接wifi(联想电脑怎么连接wifi步骤台式)
  • 联想电脑怎么连接wifi(联想电脑怎么连接wifi步骤台式)
  • 联想电脑怎么连接wifi(联想电脑怎么连接wifi步骤台式)
  • 联想电脑怎么连接wifi(联想电脑怎么连接wifi步骤台式)
  • 联想电脑怎么连接wifi(联想电脑怎么连接wifi步骤台式)
三星官方固件下载地址(三星官方固件下载网站)

请您参考:1.通过手机中“三星应用商店”或“Galaxy特色订制”搜索需要的软件并下载安装。2.通过手机浏览器搜索需要的软件下载安装(若是自带的浏览器,下载的安装包保存在我的文件-Download文件...

win10企业版和专业版有什么区别哪个好

就性能而言,Windows10企业版比专业版好。1.企业版的更新频率比专业版少,可以降低更新所需要的可用时间。2.如果你是企业,在管理、保护数据安全、部署和集中管理设备方面,企业版会比专业版更具优势...

51重装系统后怎么恢复原来的系统

方法/步骤分步阅读1/5在开始菜单中打开控制面板,打开控制面板之后,选择:备份和还原选项。2/5点击:打开系统还原,如果有账户控制则会有所提示,通过即可。3/5然后会开始还原文件和设置的向导,你只需要...

可能没有权限使用网络资源(可能没有权限使用网络资源 win10)

右击“我的电脑”→“属性”→“计算机名”,看该选项卡中有没有出现你的局域网工作组名称,如“workgroup”等。然后单击“网络ID”按钮,开始“网络标识向导”:单击“下一步”,选择“本机是商业网络...

怎么查看宽带账号和密码(怎么查宽带帐号和密码)
怎么查看宽带账号和密码(怎么查宽带帐号和密码)

宽带账号密码要记牢,重要的账号密码要记小本本上!下面我来具体讲讲获取方法。1.查看发票、合同、官方小卡片是否标明。以我们这个城市为例,发票上的用户号码就是宽带账号。047403100006就是宽带账号,密码是123456,密码错误就是身份证...

2025-12-19 21:05 liuian

预装系统的固态硬盘怎么安装

首先,安装系统有三个办法可以选择:一是在固态硬盘上全新安装系统;二是在PE系统下,将机械硬盘上的系统克隆到固态硬盘上。注意GPT格式的硬盘不能用这个方法。三是HDD安装。然后,主板设置中将固态硬盘设置...

如何还原已经被删除的文件(如何还原彻底删除的文件)

首先我们需要通过浏览器搜索互盾数据恢复软件,将这款软件下载到我们的电脑上1、下载好后运行互盾数据恢复软件,软件界面有六大功能,因为我们需要对回收站清空的数据进行恢复,所以点击界面的“误清空回收站”即...

mhdd硬盘修复教程(如何用mhdd修复硬盘)

eraser这个选项试试。mhdd修复效果不是很好哦打开MHDD的重映射功能,就是REMAP选为NO,然后再重新扫描就可以自动映射了1在DOS下运行MHDD,软件启动后按F4;2点一下上方向键,再...

手机真伪查询官网入口(荣耀手机真伪查询官网入口)

进入http://www.tenaa.com.cn/网站后,首先输入的是您的省份,城市,和许可证号.许可证号需要去掉电池,在手机的后面看一个贴条:进网许可;第一行就是许可证号;第二行是设备型号;第三行...

穿越诸天万界推倒女主角的小说

《绝代双骄》。对于此书,其深入人心有目共睹,我就不再赘述了。据我所知,包括歌仔戏在内它的版本至少有七种,不过最好的梁吴版都没能演出其精髓。此书或许可以看作承前启后的作品:既为之前的传统套路作了个精彩的...

电脑grub怎么修复系统(windows grub修复)

方法是:1、准备一个任意大小的u盘,然后在能正常使用的电脑搜索通用pe工具箱,在官网下载最新的通用pe工具箱。安装它,然后将u盘制作成u盘启动盘。2、接着我们将制作好的u盘启动盘,插在报错的电脑上,重...

photoshop安卓手机版下载(photoshop android版)

1.在搜索引擎中输入adobe并点击搜索。2.点击adobe官网。3.点击支持并点击下载与安装。4.点击开始免费试用并点击下载。5.打开文件夹并点击打开进行安装即可。点击开始免费试用并点击下载。5.打...

笔记本无线上网卡包月(笔记本无线上网卡包月多少钱)

您好,各地区无线包月上网卡资费情况是不同的,建议以您当地电信资费为准,湖北电信的包月无线上网卡:1、天翼宽带上网卡省内流量套餐(8G),2、【4G上网卡】天翼宽带上网卡省内流量套餐(20G),更多上网...