【问题标题】:Axios Request Error - Message serialization failure (Invalid encoding)Axios 请求错误 - 消息序列化失败(无效编码)
【发布时间】:2022-01-09 13:32:02
【问题描述】:

我收到以下错误:

Error: 13 INTERNAL: Request message serialization failure: invalid encoding

当我尝试运行此 axios 帖子时。有什么想法有什么问题吗? (我尝试了许多不同的版本,但错误不是那么具体)

使用 Firebase 函数中的 Axios 在 Node.js 上运行它。

 const result = await axios.post('https://example_api_url.com', {
            data1: "data1",
            data2: "data2,
        }, {
          headers: {
            'Authorization': `Bearer ${API_KEY}`,
            'Content-Type': 'application/json'
          }});

【问题讨论】:

  • 你有一个错字,应该是“data2”

标签: node.js firebase axios google-cloud-functions


【解决方案1】:

这个错误似乎来自node.js grpc客户端library

gRPC 是一种语言中立、平台中立、开源的远程过程调用 (RPC) 系统,最初由 Google 开发。启用 gRPC 的云 API 通常同时具有 REST 和 RPC 接口,因此启用 gRPC 的 API 客户端不仅可以使用 JSON over HTTP 与 REST 接口对话,还可以使用协议缓冲区和 gRPC over HTTP2 与 RPC 接口对话。您可以在documentation 中探索有关它的更多详细信息。

错误不应该来自使用 axios 库,因为它与 grpc 无关。这让我认为错误可能来自服务本身,而不是客户端,但很难确定。

由于是 grpc 客户端错误,很可能是使用某种无效数据调用 Google API。

同样,responseEncoding 不相关,因为错误消息提到的是 request,而不是 response。此外,该示例令人困惑,因为它包含同一个 responseEncoding 键的两个值。

【讨论】:

  • 这最终是正确的。我发现来自 axios 的响应正确返回,但我没有从 firebase 函数服务正确传递该响应,因此出现错误。
【解决方案2】:

您可以在请求中添加编码和响应类型:

 const result = await axios.post('https://example_api_url.com', {
            data1: "data1",
            data2: "data2,
        }, {
          headers: {
            'Authorization': `Bearer ${API_KEY}`,
            'Content-Type': 'application/json',
            'responseEncoding' : 'json',  // the type of data server will respond
            'responseEncoding': 'utf-8' // used only for node.js
          }});

我附上了axios 文档,我建议仔细阅读其配置对象属性详细信息。

【讨论】:

  • 添加了这些标题后,我仍然遇到同样的错误。 (在将 json 更改为 responseType 标头时也是如此)
猜你喜欢
  • 1970-01-01
  • 2019-02-25
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 2013-07-21
  • 2022-08-20
相关资源
最近更新 更多