可以从Request对象获取当前的MediaTypeFormatter吗?

时间:2014-01-28 12:36:38

标签: asp.net-web-api json.net asp.net-web-api2

我想从请求对象中获取MediaTypeFormatter,这可能吗?

因此,如果请求以

的形式出现
    application/json 

然后我想得到MediaTypeFormatter,在这种情况下,它应该是一个JsonMediaTypeFormatter。

我需要这样做的原因是我的api方法可以支持MediaTypeFormatters(即XML和JSON)。

我正在返回一个HttpResponseMessage并将Content设置为ObjectContent,我需要传入媒体类型格式化程序,如果我将此值硬编码为json,那么它就不会支持xml。

有人做过这样的事吗?

提前致谢

1 个答案:

答案 0 :(得分:11)

您应该使用Request.CreateResponse方法。不要试图根据媒体类型找出格式化程序。 ASP.NET Web API为您进行内容协商。如果请求带有品质因数和东西怎么办?编写所有逻辑会很复杂,并且已经在框架代码中完成了。您所要做的就是使用这样的方法 - Request.CreateResponse(HttpStatusCode.OK, product);并返回响应对象,而不是自己设置ObjectContent。根据从conneg中选择的格式化程序,您的对象将被序列化。或者,您是否有一个不能使用它的特定场景?