6

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

因此,如果请求作为

    application/json 

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

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

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

有人做过这样的事情吗?

提前致谢

4

1 回答 1

11

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

于 2014-01-28T13:43:27.317 回答