首页 > 解决方案 > 什么是“application/x-amz-json”,它与“application/json”有何不同?

问题描述

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

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

标签: jsonamazon-web-servicesaws-api-gateway

解决方案


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

考虑到问题与用作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标头用于告诉服务器/客户端如何处理我们的请求


推荐阅读