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 端本地調試需注意跨域問題,參考:調試跨域問題解決方案【自帶的瀏覽器】