Skip to content

响应结构 ​

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 对象被使用,正如在 错误处理 部分解释的那样。