<>前言

因为用习惯了Vue的axios,将请求统一封装,这样可以编写一处请求,然后让需要的模块直接引用调用即可,同时也可以做拦截器,token状态刷新等等操作,或者响应特定的东西。

因此就试着封装request,并且使用风格上尽量偏向于跟vue admin template里的request类似,这样也好让自己上手。

<>代码实现

封装wx.request,在utils创建文件,request.js:
const app = getApp(); var baseURL = app.getURL();//将url定义在app.js缓存中,直接赋值也是可以的
var user = app.getGlobalUserInfo(); //本地数据从本地缓存中取出 /** * 统一封装的请求 * @author
smoyu * @param option为参数对象,至少包含url、method */ const Request = function request(
option) { return new Promise(function (resolve, reject) { let header = {
'content-type': 'application/json', "Authorization": user.cookieToken
//携带token在请求头中 }; wx.request({ url: baseURL + option.url, method: option.method,
data: option.data === undefined ? '' : JSON.stringify(option.data), //
如果data没有传入,就给空串,不然就序列化 header: header,//请求头 timeout:5000,//超时时间 5s success(res)
{ //请求成功,此处根据你的业务返回的状态码进行修改 if (res.data.code === 20000) { resolve(res); } else
if (res.data.code === 50000) { //登录状态失效,需要重新刷新数据 reject('登录状态失效,需要重新刷新数据'); }
else { //其他异常 reject('运行时错误,请稍后再试'); } }, fail(err) { //请求失败 reject(err) } }) })
} //导出 module.exports = Request
统一封装完之后就要写具体调用api了
在api文件下新建一个文件名称 comment.js
const request = require('../utils/request');//引入刚刚编写的request 文件 /** *
在这里写具体的api */ const comment = { /** * 根据id查询 */ findMongoCommentByForumId(
forumId) { return request({ url: `/comment/mongo/blog/forum/${forumId}`, method:
'GET' }); } }; //导出 module.exports = comment
那么就是使用了:
在具体要调用的js文件中,引入这个comment.js,然后调用findMongoCommentByForumId即可
import CommentApi from "../../../api/comment";//引入 /** * 根据帖子Id查询 * @param
{forumId} 帖子Id */ findMongoCommentByForumId(forumId){ let that = this;
CommentApi.findMongoCommentByForumId(forumId).then(res =>{ console.log("代码为:",
res); }) }
在风格上已经非常类似了,这样也达到了我个人需求。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信