平台兼容性
fetch.js
本插件使用原生js 进行封装。使用promise 进行异步请求。
本插件分为简易版和dev版 简易版只需要简单配置即可直接使用dev版进行了更多功能集成
两种版本均提供dev 和 bulid 目录 区别为开发环境和生产环境区别为dev 代码中提供 错误提示以及 打印 和注释
bulid为压缩版只提供一般报错,开发者可以在生产环境中调试完将引入的插件改为bulid版。
一、dev版目录介绍
1. api.js 封装请求方法 对全局的请求进行统一管理
2. fetch.js 预处理和返回拦截
3. requestURL.js 包含全局的url 进行统一管理
集成功能说明
fetch.js参数说明
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
url | String | 是 | --- | 开发者服务器接口地址例 |
data | Object | 否 | 请求的参数 | |
method | String | 否 | GET | 同uni-app |
CheckToken | Boolen | 否 | true | 是否验证Token |
ShowLoading | Boolen | 否 | true | 请求是否显示loading |
ShowMsg | Boolen | 否 | true | 请求是否显示服务端返回提示 |
- 请求前拦截添加默认参数,验证token。
- 请求后拦截返回,处理异常、添加loading、文字提示
20190614更新
更新说明:本插件已经停止更新。请勿使用。如有问题自行解决。
20190506更新
更新说明修复了几个小bug
使用方法
使用前先配置
- 更改requestURL.js 的值将其改为你的
const baseurl = "https://example.com/";
- 新增一个请求url,示例:
export default { getinfo: `${baseurl}/api/getinfo`, inputinfor:`${baseurl}/getapi`, }
-
在api.js中新增一个请求方法示例:
inputinfo: async function (prams) { let response = await request.Fetch(requestURL.getinfo,prams,'POST') return response; },
4.在使用本插件前,本文档假定你的接口返回数据为如下格式
{ code:1, data:{ //全部数据 }, msg:'提示信息' }
请求之后会直接拦截code 为 -1的状态, 表示登录过期并跳转到登录页面。 请按照你的约定格式进行修改 5.拦截器配置 本插件只进行了token拦截
CheckToken:function(){ let token = store.state.$globalData.$userinfo.token; if(!!token){ uni.showToast({ title: '您还未登录', duration: 2000 }); // #ifdef APP-PLUS uni.navigateTo({ url: '/pages/login/login' }); // #endif // #ifdef MP-WEIXIN uni.reLaunch({ url: '/pages/login/wxlogin' }); // #endif } }
开始使用
//在各个需要请求的地方引入本插件(按需引入)
import request from '../../unts/api.js'
//或者在main.js 中 (全局引入)
import request from '../../unts/api.js'
Vue.prototype.$request = request
3.使用request进行请求
async ()=>{
const data = await request.inputinfo({
code:this.code,
data:this.data
})
// doSomething...
}
// 或者
request.inputinfo({
code:this.code,
data:this.data
}).then(res =>{
//doSomething...
},err =>{
//doSomething...
})
// 等同于如下代码
uni.request({
url: this.$url + 'api/register/wechat_login',
data:{
code:this.code,
data:this.data
}
success: (ret) => {
console.log(res.data.data)
},
flie:(res)=>{
console.log(res)
}
});
tips:
- 注意:该插件不配置无法使用。请看完文档在用。
- 注意:本插件拦截了res 在页面中的请求回调实际上是res.data.data 可自行根据业务逻辑进行修改
- 注意:本插件在请求前拦截在参数中加入了 区分客户端的参数的条件编译。可自行修改或删除
- 注意:本插件默认有验证token 的步骤所以需要把token 导入进去或者删除fetch.js 中的 验证token过程
- 插件中
(err)=>{ console.log(res)}
包含了全部的错误。如code 值不为0 404 403 500 等常见错误都会进入此回调中 - 由于uni-app 不支持区分开发环境和生产环境本插件的showtoast 均为 开发环境中的提示。开发者可自行更改提示
- 此插件另一个方法为CheckToken() 使用方法为
request.CheckToken()
此步骤可以直接验证token 但需要开发者把token 储存的位置导入插件中