Skip to content

数据请求

为了方便小程序应用的数据读取,这里封装了一个通用版本的请求。

代码

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);
});