数据请求
为了方便小程序应用的数据读取,这里封装了一个通用版本的请求。
代码
把request.js
放到Uni-app项目的根目录下。
typescript
// 读取接口
export async function getUrl(){
var api = uni.getStorageSync('api');
if (!api){
var res = await getApi();
api = res.data.api;
uni.setStorageSync('api', api);
}
return api;
}
// 读取数据
export async function post(command, data){
var api = await getUrl();
return new Promise( (resolve, reject) => {
uni.request({
url: api + command,
header: {
'Authorization': 'Bearer ' + getApp().globalData.token,
},
method: 'POST',
data,
success: (res) => {
resolve(res);
},
fail: (err) => {
reject(err);
}
});
});
}
// 文件上传
export async function upload(command, data, file){
var api = await getUrl();
return new Promise( (resolve, reject) => {
uni.uploadFile({
url: api + command,
header: {
'Authorization': 'Bearer ' + getApp().globalData.token,
},
filePath: file,
formData: data,
success: (res) => {
resolve(res);
},
fail: (err) => {
reject(err);
}
});
} );
}
// 读取小程序应用的接口地址
export async function getApi(){
return new Promise( (resolve, reject) => {
uni.request({
url: getApp().globalData.api,
header: {
'Authorization': 'Bearer ' + getApp().globalData.token,
},
method: 'POST',
// 把 tag_name 改成你小程序应用 tag_name 值
// 这里的 name 值会推送到 http://你的域名/api/v1/get
// 你可以根据 name 值返回数据接口url
// 如果这里返回的为 http://你的域名/test/api
data: { name: 'tag_name' },
success: (res) => {
resolve(res);
},
fail: (err) => {
reject(err);
}
});
});
}
示例
typescript
import { post, upload } from '@/request.js';
// post 请求
// 如果数据接口url为 http://你的域名/test/api
// 那么 /demo 就为 http://你的域名/test/api/demo
post('/demo', { id: 1 }).then(res => {
console.log(res);
})
// 文件上传
var file = '文件路径';
upload('/upload', { id: 1 }, file).then(res => {
console.log(res);
});