API联调
QQ2052021114 api
所有的api方法都会被注入到 uni.$API
对象中。
调用:uni.$API.Module.api()
export default {
methods: {
async fetchData() {
let res = await uni.$API.Demo.demoList();
},
}
}
目录地址: API (opens new window)
Module
: 是位于api->page
里的模块,也是page
下文件的名称 (首字母大写)api
: 是Module
里面的方法
# 新增API 模块
在 api->page
新增一个API模块文件,文件的首字母大写,例如新增 Demo.js
,api->index.js
会遍历该文件,自动将所有的 Demo
模块的方法
注册在 uni.$API.Demo
中
import request from '../request';
class Demo {
list($data) {
return request.ajax('demo/index/list', $data);
}
}
export default new Demo();
如果需要调用 list
方法,那么可以这样使用:uni.$API.Demo.list()
。
# GET 和 POST 等等接口类型
每个接口都会经过一层js逻辑的处理,该逻辑的位置在 api->apiConfig.js
,源码如下:
export default {
processing: ($url = '', query = {}) => {
if (!$url) return;
let method = 'get';
let url = $url;
// 默认过滤,可以自行独自处理特殊情况
query = uni.$co.Common.clearParams(query);
if (query.hasOwnProperty('method')) {
method = query.method;
// 删除 method
delete query.method;
}
// 编辑删除时需要id
if (method.toLowerCase() === 'get') {
if (query.id || Number(query.id) === 0) {
url = url + `/${query.id}`;
}
// 删除ID
if (query.id) {
delete query.id;
}
}
let requestObj = {url};
requestObj['method'] = method;
requestObj.data = query;
return requestObj;
},
}
从上面的代码中可以看出,uplus (opens new window) 默认的请求方式是 get
,如果需要更改请求类型,那么我们可以通过 query
对象项目的 method
更改,
例如里面post请求,当然也可以使用 'PUT' 等等。
export default {
methods: {
async fetchData() {
let res = await uni.$API.Demo.list({method:'POST'});
},
}
}
同时会发现所有的参数会经过一个 uni.$co.Common.clearParams
方法,该方法主要是为了过滤空字符、空数字等字段。如果有其他的场景,二次开发的时候,可以相应修改。
uplus (opens new window) 默认将所有的 get
请求中只要带有 id
参数的都会改为 demo/index/list/${id}
的形式,如果不符合自己场景的,可以做出调整。