我们都知道WebAPI2默认倾向于在HttpResponseMessage
Content
消息中添加反斜杠和引号。
使用标准操作代码:
public HttpResponseMessage Test()
{
return this.Request.CreateResponse(HttpStatusCode.OK, "Hello World");
}
返回""Hello World",显示"Hello World"(带引号)。
如果我改变API方法并添加编码:
public HttpResponseMessage Test()
{
return new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent("Hello World", System.Text.Encoding.UTF8, "application/json")
};
,这就解决了问题,因为Content
的结果变成了Hello World,但只是针对Test
方法。
很好,但这只解决了Test
方法的问题,而不是解决所有其他API方法的问题。
是否有一个简单而单一的方法来添加所有Controller
动作的UTF8编码一次?
你似乎不明白什么是编码。找出答案,因为知道这一点很重要。编码是将字符串转换为字节的一种方法。
世界上没有任何编码添加反斜杠和引号。JSON添加它们。JSON是一种容器格式,就像XML。
如果你不想要JSON,就不要使用JSON。您不需要指定UTF8,因为它是默认的。字符串内容的默认。编写一个帮助器,以您喜欢的任何方式创建HttpResponseMessage
。这样,您可以拥有任何您喜欢的复杂逻辑,并且仍然在一行中构造响应。