Ich arbeite an der MVC 4-Web-API und bin etwas verwirrt über die Standardformatierung. Ich möchte, dass die API-Daten in JSON sind. Es gibt es jedoch in XML zurück. Laut der MVC 4 Start-Video bei Ссылка , es sollte standardmäßig JSON sein. Aber wenn ich ein neues Web-API-Projekt erstellen und das Beispiel ausführen, bekomme ich Folgendes:
%Vor%Ich bin im Kreis herumgelaufen und habe versucht, das in JSON zu bekommen, aber anscheinend gibt es viele Fehlinformationen darüber. Wie:
GlobalConfiguration.Configuration.Formatters.Insert(0, new JsonNetFormatter(serializerSettings));
hinzufüge, sollte es den Trick machen. Aber ich habe das abgeschrieben, weil keines der Beispiele funktioniert. Was könnte ich tun, etwas Einfaches, um Daten standardmäßig im JSON-Format auszugeben?
Fügen Sie dies GLOBAL.ASAX hinzu, um die Antwort application / json
zu erhalten %Vor%So sollte es im Zusammenhang aussehen:
%Vor%ODER Wenn Sie XML als Medientyp beibehalten möchten, können Sie stattdessen App_Start / WebApiConfig.cs :
bearbeiten %Vor%Dies macht JSON zur Standardantwort für einen Webbrowser, gibt aber text / html zurück.
Ich möchte, dass die API-Daten in JSON sind. Es gibt es jedoch in XML
zurück
Wie greifen Sie auf Ihr Webapi zu? Verwenden Sie Chrome, um auf Ihren Webapi-Service zuzugreifen (wie Nick im Kommentar erwähnt hat)? Chrome fügt der Anforderung die Accept-Headeranwendung / xml hinzu ...
Wenn ich dem Header des Inhaltstyps "application / json" hinzufüge, sollte JSON
zurückgegeben werden
Versuchen Sie stattdessen, die Kopfzeile 'Accept' zu übernehmen.
Wenn ich einen JsonFormatter erstelle und ihn in Application_Start GlobalConfiguration.Configuration.Formatters.Insert (0, neuer JsonNetFormatter (serializerSettings)); Es sollte den Trick machen. Aber ich habe das abgeschrieben, weil keines der Beispiele funktioniert.
Wenn der Accept-Header der Anfrage "application / xml" lautet, wird bei der Inhaltsverhandlung weiterhin der XmlMediaTypeFormatter ausgewählt und die Anwendung / xml zurückgegeben. Eine weitere Sache ist, dass der Formatierer für JSON JsonMediaTypeFormatter genannt wird und sich bereits in Position 0 der Formatzersammlung befindet.
Wenn Sie nur JSON möchten, dann löschen Sie die Formatierersammlung aller Standardwerte und fügen Sie dann nur noch den JSON-Eintrag hinzu.
Sie müssen die xml-Unterstützung nicht entfernen, um eine JSON-Antwort zu erhalten. Bei GET-Anfragen sollten Sie den Accept-Header und nicht den Content-Type-Header setzen. Für andere HTTP-Verben kommt es darauf an. Vollständig erklärt hier.
Bonus: Verwenden Sie das Postman-Plugin von Google Chrome, um REST-APIs zu testen. Sehr zu empfehlen:)
Sie können auch unten in GLOBAL.ASAX
schreiben %Vor%das funktioniert auch für mich.
Zitat von Felipe Leusin ( Wie bekomme ich die ASP.NET-Web-API, um JSON anstelle von XML mithilfe von Chrome zurückzugeben? )
Ich füge einfach Folgendes in die Klasse App_Start / WebApiConfig.cs in meinem MVC-Web-API-Projekt ein.
%Vor%Das stellt sicher, dass Sie bei den meisten Abfragen json erhalten, aber Sie können xml erhalten, wenn Sie text / xml senden.
Wenn Sie die Antwort "Content-Type" als "application / json" benötigen, überprüfen Sie bitte die folgende Antwort von Todd: Ссылка
Tags und Links asp.net-web-api asp.net-mvc-4