【发布时间】:2011-12-21 08:35:18
【问题描述】:
RESTFul 服务的请求和响应是否可以根据客户端的“Accept”属性动态提供服务
即如果客户端可以“接受”应用程序/xml,那么我的服务应该会自动理解请求和响应应该是 xml 类型并相应地处理请求。
因此,我不会为希望在 json 中请求/响应的客户创建另一个服务,并且相同的服务应该能够处理它。
【问题讨论】:
RESTFul 服务的请求和响应是否可以根据客户端的“Accept”属性动态提供服务
即如果客户端可以“接受”应用程序/xml,那么我的服务应该会自动理解请求和响应应该是 xml 类型并相应地处理请求。
因此,我不会为希望在 json 中请求/响应的客户创建另一个服务,并且相同的服务应该能够处理它。
【问题讨论】:
是的,事实上 WCF 可以配置为为您执行此操作:WCF Web HTTP Formatting
启用后,自动格式化会选择最适合的格式 返回响应。它通过检查来确定最佳格式 以下,按顺序:
- 请求消息的 Accept 标头中的媒体类型。
- 请求消息的内容类型。
- 操作中的默认格式设置。
- WebHttpBehavior 中的默认格式设置。
另外,请参阅 <webHttpEndpoint> 的文档,特别是 automaticFormatSelectionEnabled 属性。
【讨论】:
是的! 它可能应该是协商内容类型的首选方式。
也就是说,您可以在 URL 中指定的内容类型覆盖可以方便地从浏览器调试 GET。 (即 myResource.json 将等同于带有 Accept json 的 myResource)
【讨论】:
使用WCF Web Api Content negotiation 真的很容易。只需设置 Accept Header 即可。
【讨论】: