2014-02-04 3 views
1

Как мы знаем по умолчанию, в среде Web API есть форматирующие элементы, которые могут создавать JSON или XML. Если вы хотите создать некоторые другие типы вывода, то во многих местах, которые я читал, требуется Внесите пользовательский формат, который будет делать то, что вы хотите. Но f.e. Мне нужно, чтобы вернуть сырой HTML из моего контроллера Web API, и если я создаю HttpResponseMessage таким образом:ASP.NET Web API Formatters

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

Тогда у меня есть необработанный HTML в своем ответе, что браузер будет распознавать и визуализации. Мой вопрос на самом деле Почему он работает без использования какого-либо пользовательского форматирования, и в этом случае мне нужно его создать, и в котором я не должен.

ответ

5

Formatters предоставляют вам гибкость для ответа клиенту с теми же данными, но в произвольном формате в зависимости от того, что клиент запросил. Если клиент запрашивает application/json, ваша служба будет использовать форматировщик JSON для ответа JSON.

Насколько я знаю, formatters применяются только в том случае, когда ваш метод напрямую возвращает объект для сериализации. В вашем случае, независимо от типа носителя, который запрашивал клиент, вы возвращаете HttpResponseMessage со строкой, содержащей html-контент.

Как правило, вы хотите использовать форматировщики, если хотите, чтобы ваша служба могла обслуживать одни и те же данные в разных форматах в зависимости от заголовка , указанного клиентом.