WebAPI гарантирует, что все ответы автоматически кодируются UTF8, чтобы избежать нежелательной обратной реакции и кавычек
Мы все знаем, что по умолчанию 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
становится приветом миру, но только для метода Test
.
Отлично, но это решило проблему только для Test
метод, не для всех других методов API.
Controller
сразу?1 ответ:
Вы, кажется, не понимаете, что такое кодировка. Узнайте, потому что это важно знать. Кодирование-это способ превратить строку в байт.
Никакая кодировка в мире не добавляет обратную косую черту и кавычки. ДЖСОН добавляет их. JSON-это формат контейнера, как и XML.
Не используйте JSON, если вы не хотите использовать JSON. Вам не нужно указывать UTF8, потому что это значение по умолчанию. Значение по умолчанию для содержимого строки . Напишите себе помощника, который создал
HttpResponseMessage
так, как вам нравится. Таким образом, вы можете имейте любую сложную логику, которая вам нравится, и все равно постройте ответ в одной строке.