javascript - axios transformRequest - 如何改变 JSON 负载

标签 javascript axios

我正在使用 axios在我的 Express API 中,我想在将有效负载发送到另一个 API 之前对其进行转换。 axios 有一个叫做 transformRequest 的东西.这是我遇到问题的地方。

我的代码是这样的:

const instance = axios.create({
  baseURL: 'api-url.com',
  transformRequest: [
    (data, headers) => {
      const encryptedString = encryptPayload(JSON.stringify(data));

      data = {
        SecretStuff: encryptedString,
      };

      return data;
    },
  ],  
});

// firing off my request using the instance above:
const postData = {
    id: 1,
    name: 'James',
};
instance.post('/getStuff', postData)

最终,我想发布 api-url.com JSON:{"SecretStuff": "some-base64-string"} - 而不是 postData 上面显示的对象。

在文档中,它说:“数组中的最后一个函数必须返回一个字符串或 Buffer、ArrayBuffer、FormData 或 Stream 的实例”——但当然我在这里返回一个对象,数据。奇怪的是,在 axios 文档中它显示他们从 transformRequest 返回 data,但在他们的情况下,这必须是正确的数据类型。

我如何实际使用 axios 转换有效负载?

最佳答案

axios.create({
    transformRequest: [(data, headers) => {
        // modify data here
        return data;
    }, ...axios.defaults.transformRequest]
});

必须附加the original axios.defaults.transformRequest到这里的 transformRequest 选项..

关于javascript - axios transformRequest - 如何改变 JSON 负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48819885/

相关文章:

javascript - D3.js 如何在有新数据时更新图表

javascript - 如何让 require.context 在有/没有 Craco 的情况下与 Create React App 一起工作?

javascript - jquery 投票赞成反对,请求帮助

javascript - Timeout 和 Promise 函数的执行顺序(Main Tasks 和 Micro Tasks)

reactjs - 为什么我的 get 路由不运行我的 Mongoose 查询?

javascript - Reactjs 应用程序中的典型文件结构 : grouping API calls in api. js

vue.js - Vuejs全局导入axios方法

javascript - vuejs 获取所选类的值

Node : POST - Request Method: OPTIONS Status Code: 403 Forbidden

javascript - YUI uploader 错误处理