Веб-API: содержимое в HttpResponseMessage
В одном из моих запросов Get я хочу вернуть HttpResponseMessage с некоторым контентом. В настоящее время я работаю следующим образом:
var header = new MediaTypeHeaderValue("text/xml");
Request.CreateResponse(HttpStatusCode.OK, myObject, header);
Однако, поскольку я использую статический запрос, это становится очень трудно проверить. Из того, что я прочитал, я должен был бы сделать следующее:
return new HttpResponseMessage<T>(objectInstance);
Однако, похоже, это невозможно. Это потому, что я использую более старую версию WebApi/.NET?
На боковой ноте я обнаружил, что вы могли бы создать ответ следующим образом:
var response = new HttpResponseMessage();
response.Content = new ObjectContent(typeof(T), objectInstance, mediaTypeFormatter);
Что меня озадачило, почему я должен добавить здесь mediaTypeFormatter. Я добавил форматтера медиафайлов на уровне global.asax.
Спасибо!
Ответы
Ответ 1
HttpResponseMessage<T>
был удален после Бета. Прямо сейчас, вместо типизированного HttpResponseMessage
, мы набрали ObjectContent
Если вы вручную создаете HttpResponseMessage
, используя свой конструктор без параметров без ссылки, для выполнения согласования содержимого нет контекста запроса, поэтому вам нужно указать форматтер или выполнить согласование содержимого вручную.
Я понимаю, что вы не хотите этого делать - используйте вместо этого:
HttpResponseMessage response = Request.CreateResponse<MyObject>(HttpStatusCode.OK, objInstance);
Это создало бы ответное сообщение, основанное на согласовании содержимого, выполненном против запроса.
Наконец, вы можете больше узнать о контенте контента здесь По этой ссылке