Содержимое HttpResponseMessage как JSON - программирование
Подтвердить что ты не робот

Содержимое HttpResponseMessage как JSON

У меня есть asp.net-mvc web api. По нескольким причинам (перенаправление из-за отсутствия полномочий...) я не могу просто использовать простой объект и вернуть его в свой метод контроллера. поэтому мне нужен класс HttpResponseMessage, который позволяет мне перенаправлять.

в настоящее время im делает это

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
var formatter = new JsonMediaTypeFormatter();
response.Content = new ObjectContent<Response>(response, formatter, "application/json");

чтобы получить объект, сериализованный как json, в содержимое HttpResponseMessage. Почему-то у меня такое ощущение, что есть еще один, лучший способ сделать это. любые идеи по этому поводу?

4b9b3361

Ответ 1

Вы можете сделать

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
Request.CreateResponse<Response>(HttpStatusCode.OK, response);

По умолчанию Web API устанавливает формат ответа на основе Content-Type, указанного в заголовке HTTP-запроса, но есть некоторые перегрузки метода CreateResponse, где вы можете указать тип форматирования.

Вы также можете удалить сериализатор web api xml, чтобы заставить все ответы быть JSON, если это то, что вы хотите - с верхней части моей головы. Я думаю, что это метод Formatters.Remove на HttpCOnfiguration.