跳到主要内容

4.8. 定义 Message Content

4.8. 定义 Message Content (Defining Message Content)

使用 HTTP 的 application MUST 规定 request 和 response content 的格式, 通常通过定义一个或多个 media type [RFC6838] 实现. 这样做时, 它们 SHOULD 按 [RFC6838] 中的过程注册这些 media type.

常见格式包括:

  • JSON [JSON]

  • XML [XML]

  • CBOR [RFC8949]

  • Protocol Buffers

  • 特定于 application 的自定义格式

规定 content 时, application SHOULD:

  • 尽可能使用现有且广为理解的 media type (例如 JSON content 使用 application/json).

  • 必要时使用适当 tree 定义新的 media type (例如基于 JSON 的 vendor-specific format 使用 application/vnd.example.myapp+json).

  • 清楚规定 content 的 structure 和 semantics.

  • 考虑使用 content negotiation 支持同一 resource 的多个 representation (见 [HTTP] Section 12).

  • 使用 Content-Type header field 指示所发送 content 的 media type.

  • 使用 Accept header field 指示 client 愿意接收的 media type.

application SHOULD 支持 content negotiation, 以允许 client 和 server 就 resource 的 representation 达成一致. 这通过 request 中的 Accept header field 和 response 中的 Content-Type header field 完成.

例如, client 可能发送:

Accept: application/json, application/xml;q=0.9

表示它偏好 JSON, 但也会接受偏好稍低的 XML.

随后 server 可以根据自身可提供的内容和 client preference, 使用最合适的 representation 响应.