Comment faire pour forcer ASP.NET l'API Web pour toujours de retour JSON?
ASP.NET Web API ne la négociation de contenu, par défaut, sera de retour XML ou JSON ou autre type basé sur la Accept
en-tête. Je n'ai pas besoin de cela, il est un moyen (comme un attribut ou quelque chose) pour dire à l'API Web pour toujours de retour JSON?
- Vous pourriez être en mesure de faire cette suppression de tous les formateurs à l'exception json de
GlobalConfiguration.Configuration.Formatters
Vous devez vous connecter pour publier un commentaire.
Soutenir que JSON ASP.NET l'API Web – LE DROIT CHEMIN
Remplacer IContentNegotiator avec JsonContentNegotiator:
JsonContentNegotiator mise en œuvre:
Accept
ing XML obtiendrez JSON, et ne sera pas obtenir une 406?Accept
en-tête.GlobalConfiguration...Clear()
fonctionne réellement.Effacer tous les formateurs et ajouter Json formateur en arrière.
MODIFIER
Je l'ai ajouté à
Global.asax
à l'intérieur deApplication_Start()
.Philip W avait le droit de réponse, mais pour plus de clarté et une solution de travail, modifier votre Global.asax.cs fichier ressemble à ceci: (Notez que j'ai dû ajouter le Système de référence.Net.Http.Mise en forme à la bourse de fichier généré)
Cette opération efface le XML formateur et ainsi défaut au format JSON.
Inspiré par Dimitri Pavlov est une excellente réponse, j'ai modifié légèrement afin que je puisse plug-in de ce que formateur, je voulais faire respecter.
De crédit à Dimitri.
Si vous voulez le faire que pour une seule, puis de déclarer votre méthode retournant
HttpResponseMessage
au lieu deIEnumerable<Whatever>
et à faire:ce code est une douleur pour les tests unitaires, mais c'est aussi possible, comme ceci:
Cela a corriger les en-têtes set. Semble un peu plus élégant.
Yo pouvez utiliser dans WebApiConfig.cs:
pour ceux qui utilisent OWIN
devient (en Démarrage.cs):