正如我们默认所知,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,浏览器将识别并呈现。我的问题其实 为什么它不使用任何自定义格式化程序,并且在这种情况下我需要创建一个,我不应该在其中。
答案 0 :(得分:5)
格式化程序可让您的服务灵活地响应具有相同数据的客户端,但具体取决于客户端要求的格式。如果客户端要求application/json
,您的服务将使用JSON格式化程序来响应JSON。
据我所知,格式化程序仅适用于您的方法直接返回要序列化的对象的情况。在您的情况下,无论客户端要求的媒体类型如何,您都会返回一个HttpResponseMessage
,其中包含一个包含html内容的字符串。
通常,如果您希望服务可能以不同的格式提供相同的数据,则需要使用格式化程序,具体取决于客户端指定的Accept
标头。