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.

Есть ли простой и единственный способ добавить кодировку UTF8 для всех действий Controller сразу?
1 5

1 ответ:

Вы, кажется, не понимаете, что такое кодировка. Узнайте, потому что это важно знать. Кодирование-это способ превратить строку в байт.

Никакая кодировка в мире не добавляет обратную косую черту и кавычки. ДЖСОН добавляет их. JSON-это формат контейнера, как и XML.

Не используйте JSON, если вы не хотите использовать JSON. Вам не нужно указывать UTF8, потому что это значение по умолчанию. Значение по умолчанию для содержимого строки . Напишите себе помощника, который создал HttpResponseMessage так, как вам нравится. Таким образом, вы можете имейте любую сложную логику, которая вам нравится, и все равно постройте ответ в одной строке.