1220 votes

Comment puis-je obtenir ASP.NET Web API pour retourner JSON au lieu de XML à l’aide de Chrome ?

En utilisant les nouveaux API de Web ASP.NET, en Chrome je vois XML - Comment puis-je changer lui demande JSON pour que je peux le voir dans le navigateur ? Je crois que c’est juste une partie des en-têtes de demande, suis-je correct dans cette ?

1797voto

Felipe Leusin Points 4583

J’ai juste ajouter ce qui suit dans la classe App_Start/WebApiConfig.cs dans mon projet MVC Web API.

Qui s’assure que vous obtenez json sur la plupart des requêtes, mais vous pouvez obtenir xml lorsque vous envoyez le texte/xml.

Si vous avez besoin d’avoir la réponse Type de contenu application/JSON s’il vous plaît vérifier la réponse de Todd ci-dessous : http://stackoverflow.com/a/20556625/287145

509voto

Glenn Slaven Points 15742

Si vous faites cela dans l' WebApiConfig , vous obtiendrez JSON par défaut, mais il sera toujours vous permettent de renvoyer du XML si vous passez text/xml comme le demande Accept - tête

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
    }
}

Si vous n'êtes pas en utilisant l'architecture MVC type de projet et n'ont donc pas de cette classe, pour commencer, de voir cette réponse pour plus de détails sur la façon de l'intégrer.

320voto

Todd Menier Points 3599

J'aime Felipe Leusin de l'approche best - assurez-vous que les navigateurs obtenir JSON sans compromettre la négociation de contenu à partir de clients qui veulent réellement XML. La seule pièce manquante pour moi a été que les en-têtes de réponse contenait toujours content-type: text/html. Pourquoi est-ce un problème? Parce que je utiliser le JSON Formateur extension Chromequi inspecte le contenu-type, et je ne suis pas la jolie mise en forme, j'y suis habitué. J'ai corrigé que par une simple mise en forme personnalisée qui accepte du texte/html demandes et les retours d'application/json réponses:

public class BrowserJsonFormatter : JsonMediaTypeFormatter
{
    public BrowserJsonFormatter() {
        this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
    }

    public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType) {
        base.SetDefaultContentHeaders(type, headers, mediaType);
        headers.ContentType = new MediaTypeHeaderValue("application/json");
    }
}

Registre comme suit:

config.Formatters.Add(new BrowserJsonFormatter());

188voto

Yakir Manor Points 1725

MVC4 Astuce #3 – Enlever le formateur XML ASP.Net Web API

En `` Ajoutez la ligne :

comme suit :

120voto

Dans la WebApiConfig.cs, ajouter à la fin de la fonction de registre :

Source : http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X