REST服务:格式化请求与响应的最佳实践是什么?

时间:2012-08-16 08:24:12

标签: web-services rest

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

  1. 忽略请求的Content-Type,并解析请求正文,就好像它是由URI表示的格式一样。
  2. 忽略URI标记,并假定请求和响应的格式均由Content-Type定义。
  3. 根据Content-Type解析请求正文,并将响应格式化为URI提示。
  4. 我个人喜欢#3的方法,但有点担心格式的差异。这里通常的做法是,接受不同格式的请求和响应是否可以接受?如果不是,我更喜欢方法#1,而#2似乎完全关闭和不直观。这里有什么建议吗?

2 个答案:

答案 0 :(得分:2)

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

方法#1显然滥用HTTP,应该永远不会看到光明。

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

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

答案 1 :(得分:1)

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