uni-app 中有很多原生的 API,其中我们经常会用到的肯定有:uni.request(OBJECT)
method 有效值
注意:method有效值必须大写,每个平台支持的method有效值不同,详细见下表。
success 返回参数说明
data 数据说明
最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String。转换规则如下:
- 对于 GET 方法,会将数据转换为 query string。例如 { name: ‘name’, age: 18 } 转换后的结果是
name=name&age=18。 - 对于 POST 方法且 header[‘content-type’] 为 application/json 的数据,会进行 JSON序列化。
- 对于 POST 方法且 header[‘content-type’] 为application/x-www-form-urlencoded 的数据,会将数据转换为 query string。
uni.request({
url: 'https://api.uomg.com/api/rand.qinghua', //仅为示例,并非真实接口地址。
data: {
text: 'uni.request'
},
success: (res) => {
console.log(res.data);
}
});
返回值
如果希望返回一个 requestTask 对象,需要至少传入 success / fail / complete 参数中的一个。例如:
click() {
let res = uni.request({
url: 'https://api.uomg.com/api/rand.qinghua', //仅为示例,并非真实接口地址。
data: {
text: 'uni.request'
},
success(res) {
}
});
console.log(res);
}
通过 requestTask,可中断请求任务。
const requestTask = uni.request({
url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
data: {
name: 'name',
age: 18
},
success: function(res) {
console.log(res.data);
}
});
// 中断请求任务
requestTask.abort();
如果没有传入 success / fail / complete 参数,则会返回封装后的 Promise 对象:Promise 封装
click() {
let res = uni.request({
url: 'https://api.uomg.com/api/rand.qinghua', //仅为示例,并非真实接口地址。
data: {
text: 'uni.request'
}
});
console.log(res);
}
Tips
- 请求的 header 中 content-type 默认为 application/json。
- 避免在 header 中使用中文,或者使用 encodeURIComponent 进行编码,否则在百度小程序报错。
- 网络请求的 超时时间 可以统一在 manifest.json 中配置 networkTimeout。
- H5 端本地调试需注意跨域问题,参考:调试跨域问题解决方案【自带的浏览器】