首页 > 解决方案 > Axios 是在客户端处理响应体到 responseType 的转换,还是由服务器处理?

问题描述

我一直在阅读有关HTTP标头的内容并阅读了有关的内容Accept,从我阅读的内容来看,它是后端服务器用来了解请求客户端期望什么样的响应的标头。我很好奇它与responseTypeAxios 请求的选项有什么样的关系,或者它有什么关系。

// `responseType` indicates the type of data that the server will respond with
// options are: 'arraybuffer', 'document', 'json', 'text', 'stream'

假设我向GET某个 API 发送了一个请求,我知道该 API 会以JSON正文进行响应,然后我将其设置responseTypearraybuffer,Axios 是否处理该转换?

axios
  .get("https://jsonplaceholder.typicode.com/todos/1", {
    headers: { Accept: "application/json" },
    responseType: "arraybuffer",
  })
  .then((res) => {
    console.log(res.data);
  })
  .catch((err) => {
    console.log(err);
  });

标签: javascripthttpaxios

解决方案


从代码来看,它responseType只是决定了响应体如何被解析(或不被解析),它与任何标题无关。

实际响应类型由Content-Type响应标头表示。服务器应评估请求标头,以根据客户端的偏好从资源的多种内容类型中进行选择(如果可用!)Accept有关详细信息,请参阅内容协商


推荐阅读