什么是“application/x-amz-json”,它与“application/json”有什么不同?

Mat*_*Woo 6 json amazon-web-services aws-api-gateway

我在向 AWS 资源发出请求时遇到了“application/x-amz-json-1.1”。最近,一个问题是我与之通信的 API 网关不喜欢处理它(无论出于何种原因)。这让我想知道对我的请求使用 application/x-amz-json-1.1 而不是 application/json 有什么好处。令我失望的是,AWS 似乎没有关于这种奇怪内容类型的任何文档。

所以我转向 SO:什么是“application/x-amz-json”,它与“application/json”有什么不同?

Pie*_* B. 6

Amazon 没有具体记录Content-Type 的用途,但是Smithy (一种用于定义AWS 发布的服务和 SDK 的开源语言application/x-amz-json)上有协议文档:

考虑到问题与用作Content-Type1标头发出请求时的差异有关,我认为我们可以看出差异是:

  • application/json是请求/接收 JSON 数据,无需任何更具体的内容
  • application/x-amz-json-1.1(或其他版本)也是请求/接收 JSON 数据期望上面文档中描述的其他行为。(即告诉服务器/客户端这是 JSON 加上其他元素)

我认为application/x-amz-json可以将其视为一种扩展或更具体的处理application/json请求的方式。

与我通信的 API 网关不喜欢处理它(无论出于何种原因),这成为了一个问题

在向 AWS Amazon API Gateway 发出 PATCH、PUT 和 POST 请求的特定情况下,似乎需要指定Content-Type标头或其他版本。application/x-amz-json-1.1根据相关文档

内容类型(有条件)

指定 JSON 和版本,例如 Content-Type: application/x-amz-json-1.0。

条件:PATCH、PUT 和 POST 请求所需。

也许服务器理解application/json为基本的 JSON,但需要application/x-amz-json-1.1执行特定的请求。


1 个 Content-Tye标头用于告诉服务器/客户端如何处理我们的请求