响应结构
then 的回调收到的响应对象包含以下字段。
typescript
const response = {
// `errMsg` 是平台返回的消息,成功时通常是 `request:ok`、`uploadFile:ok` 这类状态消息
errMsg: "",
// `errno` 是可选的错误代码
errno: 0,
// `profile` 是可选的调试信息,由 request 和 download 适配器透传,内容由平台决定
profile: {},
// `config` 是 `un` 请求的配置信息
config: {},
// `task` 是对应的 task 信息
task: {},
// `status` 来自服务器响应的 HTTP 状态码
status: 200,
// `statusText` 是由状态码反查得到的 HTTP 状态信息,uni.request 不返回该字段
statusText: "OK",
// `headers` 是服务器响应头
// 可以使用方括号语法访问,例如: `response.headers['content-type']`
headers: {},
// 适配器执行耗时,单位毫秒
// 只统计适配器执行期间,不含拦截器和后处理
// 请求失败但拿到了响应时,在 `error.response.duration` 上也能读到
duration: 0,
// `data` 是服务器提供的响应数据
// request 适配器是 uni.request 返回的 data,类型受 dataType、responseType 影响
// upload 适配器是服务器返回的字符串
// download 适配器会把 `{ tempFilePath, filePath }` 放进这里
data: {},
// request 特有
// 服务器提供的 cookies 数据
cookies: [],
// download 特有
// 临时本地文件路径
// 没传入 filePath 指定文件存储路径时会返回,下载后的文件会存储到一个临时文件
tempFilePath: "",
// download 特有
// 用户本地文件路径
// 传入 filePath 时会返回,跟传入的 filePath 一致
filePath: "",
};duration 是 v1.1.0 新增的字段。
当使用 then 时,回调会收到这样的响应:
typescript
un.get("/user/12345").then((response) => {
console.log("errMsg", response?.errMsg);
console.log("errno", response?.errno);
console.log("profile", response?.profile);
console.log("config", response?.config);
console.log("status", response?.status);
console.log("statusText", response?.statusText);
console.log("headers", response?.headers);
console.log("data", response?.data);
console.log("cookies", response?.cookies);
console.log("tempFilePath", response?.tempFilePath);
console.log("filePath", response?.filePath);
});当使用 catch,或者传递一个 rejection callback 作为 then 的第二个参数时,响应可以作为 error 对象被使用,正如在 错误处理 部分解释的那样。