web-dev-qa-db-fra.com

Contenu de HttpResponseMessage en JSON

J'ai une API WEB ASP.NET MVC. Pour plusieurs raisons (rediriger en raison d'aucune autorisation ..), je ne peux pas simplement utiliser un objet simple et le renvoyer dans ma méthode de contrôleur. Par conséquent, j'ai besoin de la classe HttpResponseMessage qui me permet de rediriger.

Actuellement, je fais ceci:

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

.. pour obtenir l'objet, sérialisé en JSON, dans le contenu de HttpResponseMessage. D'une certaine manière, j'ai le sentiment qu'il y a une autre meilleure façon de procéder. Des idées à ce sujet?

22
gosua

Tu peux faire:

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

Par défaut, l'API Web définira le format de la réponse en fonction du type de contenu spécifié dans l'en-tête de demande HTTP, mais il existe des surcharges sur la méthode CreateResponse où vous pouvez spécifier le formateur de type.

Vous pouvez également supprimer le sérialiseur XML de l'API Web pour forcer toutes les réponses à être JSON si c'est ce que vous voulez - du haut de ma tête, je pense que c'est une méthode Formatters.Remove sur HttpConfiguration.

28
Matt Randle