ASP.NET Web API格式化程序

时间:2014-02-04 16:26:06

标签: asp.net asp.net-web-api formatter

正如我们默认所知,Web API框架具有可以生成JSON或XML的格式化程序 如果你想产生一些其他类型的输出,那么在很多地方我已经读过它需要实现自定义媒体类型格式化程序,它会做你想要的。 但是f.e.我需要从我的Web API控制器返回原始HTML,如果我以这种方式创建HttpResponseMessage:

 response = new HttpResponseMessage()
                        {
                            Content = new StringContent(
                                "<p>Hello world</p>",
                                Encoding.UTF8,
                                "text/html")
                        };

然后我在我的回复中有原始HTML,浏览器将识别并呈现。我的问题其实 为什么它不使用任何自定义格式化程序,并且在这种情况下我需要创建一个,我不应该在其中。

1 个答案:

答案 0 :(得分:5)

格式化程序可让您的服务灵活地响应具有相同数据的客户端,但具体取决于客户端要求的格式。如果客户端要求application/json,您的服务将使用JSON格式化程序来响应JSON。

据我所知,格式化程序仅适用于您的方法直接返回要序列化的对象的情况。在您的情况下,无论客户端要求的媒体类型如何,您都会返回一个HttpResponseMessage,其中包含一个包含html内容的字符串。

通常,如果您希望服务可能以不同的格式提供相同的数据,则需要使用格式化程序,具体取决于客户端指定的Accept标头。