【问题标题】:Why not use content negotiation to return JSON object?为什么不使用内容协商返回 JSON 对象?
【发布时间】:2015-01-23 02:18:34
【问题描述】:
【问题讨论】:
标签:
json
asp.net-mvc-4
rest
asp.net-web-api
【解决方案1】:
如果我必须给你这个例子,那么请使用默认模板创建 web api。这包含值控制器。
现在转到 chrome 浏览器并请求数据,然后转到 IE 并请求数据。在 chrome 中您将获得 XML 数据,而在 IE 中您将获得 JSON 数据。 (它要求下载 json)。
现在,如果您使用 fiddler 之类的工具并查看请求,那么您会发现两个浏览器的请求标头有所不同。
因此,如果您确定始终需要 json 数据,那么最好从控制器操作返回 JSON 数据。如果您不想这样做并且仍然希望您的所有请求都返回 JSON,那么请使用 application/json 设置标头“Accept”。
http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation
简而言之,如果您希望您的 api 始终通过 json 数据进行通信,那么最好返回 json 类型的结果,而不是依赖于内容协商。
【解决方案2】:
ASP.Net Web API 在其最纯粹 形式中旨在创建 REST ful Web 服务。
根据 REST 完整标准,客户端应该能够决定响应是否应该是 XML/JSON 响应。这可以在请求中使用 Content-negotiation 标头来实现。
这意味着您的理解是正确的,使用内容协商您可以决定是否需要在 ASP.Net Web API 中进行 XML/JSON 响应。