1

具体来说,这是一种情况:一个请求可以有一个正文(POST 或 PUT),其格式为Content-Type标头中指定的格式 - 例如,application/json. 但是,URI 包含不同格式的格式匹配(例如 as?_format=xmlresource_uri.xml),通常用于表示响应格式。我在这里看到三种可能的解决方案:

  1. 请求的Content-Type被忽略,请求正文被解析,就好像它是 URI 表示的格式一样。
  2. 忽略 URI 标记,并且假定请求和响应都按照Content-Type.
  3. 根据 解析请求正文Content-Type,并按照 URI 的提示格式化响应。

我个人喜欢方法#3,但有点担心格式的差异。这里通常的做法是什么,是否可以接受不同格式的请求和响应?如果不是,我更喜欢方法#1,而#2 似乎完全不直观且不直观。这里有什么建议吗?

4

2 回答 2

2

方法#3 是这三种方法中唯一的一种,它还允许请求和响应采用不同的格式。这是一件好事,因为通常请求采用一种固定格式,而响应可以以客户喜欢的任何受支持的格式呈现。

方法 #1 显然滥用了 HTTP,并且永远不会出现。

方法 #2 也很糟糕,因为客户端期望的响应格式有不同Accept的标头: .

简而言之:您可以按照 HTTP 的预期方式进行操作(使用Accept标头),或者通过允许在 URL 中内联指定格式来为客户端提供一些便利。您也可以同时执行(如果Accept标头指定格式,则使用该格式,否则还要检查 URL)。

于 2012-08-16T08:31:33.600 回答
1

方法#3 没问题,我想说您可以依靠Accept标头来确定响应格式。这样,Content-Type标头设置请求格式,Accept标头或_format查询参数设置响应格式。

于 2012-08-16T08:33:44.513 回答