为什么不使用内容协商来返回JSON对象?

时间:2014-11-25 07:04:53

标签: json asp.net-mvc-4 rest asp.net-web-api

我正在使用content negotiation从某些WebAPI控制器返回JSON对象。

我发现了这个问题 How to return Json object on Web API Controller

在这里,一些人回答似乎同意你不应该依赖谈判,但应该为JSON返回创建一个新的HttpContent类。

为什么这样好?作为初学者,内容协商似乎运作良好。

我已经搜索过这个答案,但找不到解释。

2 个答案:

答案 0 :(得分:1)

最简单的 形式的ASP.Net Web API旨在创建REST ful Web服务。

根据REST标准,客户端应该能够决定响应是否应该在XML / JSON响应中。这可以通过请求中的Content-negotiation标头来实现。

这意味着您的理解是正确的,并且使用内容协商,您可以决定是否在ASP.Net Web API中需要XML / JSON响应。

答案 1 :(得分:0)

如果我必须举例说明,请使用默认模板创建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类型的结果,而不是依赖于内容协商。