axios transformRequest - 如何改变 JSON 负载

新手上路,请多包涵

我在我的 Express API 中使用 axios ,我想在将有效负载发送到另一个 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 文档中它显示它们从 — data 返回 transformRequest ,但在它们的情况下必须是正确的数据类型。

实际上 如何使用 axios 转换有效载荷?

原文由 james 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 761
2 个回答

你不想 JSON.stringify() 你转换后的数据吗?像下面这样:

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

            data = {
                SecretStuff: encryptedString,
            };

            return JSON.stringify(data);
        },
    ],
});

原文由 Varinder 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

必须在此处将 原始的 axios.defaults.transformRequest 附加到 transformRequest 选项..

原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏