uni-app 網絡API
在 uni-app 開發中,網絡請求是獲取數據與和服務器交互的重要手段。以下介紹 uni-app 中常見的網絡 API,包括發起請求、上傳和下載以及 WebSocket、UDP 通信等方面。
發起請求
在 uni-app 里,使用uni.request(OBJECT)來發起網絡請求,它類似于傳統 Web 開發中的 AJAX,在實際開發中主要用于從服務器端接口獲取數據,其使用方式和 jQuery 的 AJAX 較為相似。下面詳細介紹其參數:
-
url(必填):這是開發者服務器接口的地址,明確請求的目標位置。
-
data:用于設置請求參數,這些參數會被發送到服務器。
-
header:用來設置請求的頭部信息,比如設置認證信息等。
-
method:指定請求的方法,默認是 GET。
-
timeout:設置請求的超時時間,避免請求長時間無響應。
-
dataType:若設置為 json,uni-app 會自動嘗試對返回的數據進行 JSON.parse 處理,方便后續使用數據。
-
sslVerify:用于驗證 SSL 證書,保障請求的安全性。
-
withCredentials:決定跨域請求時是否攜帶憑證。
-
firstlpv4:在 DNS 解析時優先使用 IPV4。
-
success:當成功收到開發者服務器返回的數據時,會觸發這個回調函數。
-
fail:一旦接口調用失敗,就會進入這個回調函數。
-
complete:無論接口調用成功與否,結束時都會執行此回調函數。
代碼示例
假設我們要從服務器獲取用戶列表數據,接口地址為https://example.com/api/users,示例代碼如下:
uni.request({url: 'https://example.com/api/users',method: 'GET',data: {page: 1,limit: 10},header: {'Content-Type': 'application/json'},success: function (res) {console.log('請求成功', res.data);},fail: function (err) {console.log('請求失敗', err);},complete: function () {console.log('請求結束');}
});
關于 data 的轉換規則
發送給服務器的 data 必須是 String 類型,如果不是 String 類型,會按照特定規則強制轉換為 String:
-
GET 方法:數據會被轉換為查詢字符串。例如{name:‘name’,age:‘18’}會轉換為name=name&age=18。
-
POST 方法:
-
- 當header[‘content-type’]為application/json時,數據會進行 JSON 序列化。
-
- 當header[‘content-type’]為application/x-www-form-urlencoded時,數據會被轉換為查詢字符串。
method 的取值
method可取值有GET、POST、PUT、DELETE、CONNECT、HEAD、OPTIONS、TRACE。在實際開發中,常用且兼容性較好的是GET和POST方法。GET一般用于獲取數據,POST常用于向服務器提交數據。
success 回調參數說明
-
data:類型可以是Object、String或者ArrayBuffer,這是開發者服務器返回的數據內容。
-
statusCode:是一個Number類型,代表開發者服務器返回的 HTTP 狀態碼,比如常見的 200 表示成功,404 表示未找到資源等。
-
header:是一個Object,包含開發者服務器返回的 HTTP Response Header 信息。
-
cookies:是一個字符串數組Array.,里面存儲著開發者服務器返回的 cookies。
上傳文件
使用uni.uploadFile(OBJECT)可以將本地資源上傳到開發者服務器中。這個操作本質上是由客戶端發起一個 POST 請求,且其content-type為multipart/form-data。下面介紹其參數:
-
url(必填):這是開發者服務器的 URL,明確上傳的目標服務器地址。
-
files(必填):這是上傳的文件列表。當使用files時,filePath和name這兩個參數將不生效。
-
fielType:指定文件類型,可取值為image、video、audio等。
-
file:要上傳的具體文件對象。
-
filePath(必填):上傳文件在本地的資源路徑。
-
name:文件在服務器端對應的 key。
-
header:設置 HTTP 請求的 header 信息。
-
timeout:設置上傳請求的超時時間。
-
formData:用于設置 HTTP 請求中的其他表單數據。
-
success、fail、complete:這三個回調函數分別在上傳成功、失敗以及結束時觸發,方便開發者進行相應處理。
代碼示例
假設要將本地的一張圖片上傳到服務器,服務器接口地址為https://example.com/api/upload,示例代碼如下:
const filePath = '/storage/emulated/0/DCIM/Camera/IMG_20230101.jpg';
uni.uploadFile({url: 'https://example.com/api/upload',filePath: filePath,name: 'file',formData: {'user_id': '12345'},success: function (res) {console.log('上傳成功', res.data);},fail: function (err) {console.log('上傳失敗', err);},complete: function () {console.log('上傳結束');}
});