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-Typeheader field 指示所发送 content 的 media type. -
使用
Acceptheader 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 响应.