Die Verwendung der neueren ASP.NET Web API , in Chrom Ich sehe XML - wie kann ich es in eine Anfrage ändern? JSON damit ich sie im Browser anzeigen kann? Ich glaube, es ist nur ein Teil der Anfrage-Header, bin ich damit richtig?
Antworten
Zu viele Anzeigen?Ich habe einen globalen Aktionsfilter verwendet, um die Accept: application/xml
wenn die User-Agent
Kopfzeile enthält "Chrome":
internal class RemoveXmlForGoogleChromeFilter : IActionFilter
{
public bool AllowMultiple
{
get { return false; }
}
public async Task<HttpResponseMessage> ExecuteActionFilterAsync(
HttpActionContext actionContext,
CancellationToken cancellationToken,
Func<Task<HttpResponseMessage>> continuation)
{
var userAgent = actionContext.Request.Headers.UserAgent.ToString();
if (userAgent.Contains("Chrome"))
{
var acceptHeaders = actionContext.Request.Headers.Accept;
var header =
acceptHeaders.SingleOrDefault(
x => x.MediaType.Contains("application/xml"));
acceptHeaders.Remove(header);
}
return await continuation();
}
}
Scheint zu funktionieren.
Die Chrome-App "Advanced REST Client" eignet sich hervorragend für die Arbeit mit REST-Diensten. Sie können den Content-Type einstellen auf application/json
u.a.: Erweiterter REST-Client
Es ist mir unklar, warum die Antwort so kompliziert ist. Sicherlich gibt es viele Möglichkeiten, dies zu tun, mit QueryStrings, Headern und Optionen... aber was ich für die beste Praxis halte, ist einfach. Sie fordern eine einfache URL an (z.B.: http://yourstartup.com/api/cars
) und Sie erhalten im Gegenzug JSON. Sie erhalten JSON mit dem richtigen Antwort-Header:
Content-Type: application/json
Auf der Suche nach einer Antwort auf genau diese Frage bin ich auf diesen Thread gestoßen und musste weiterblättern, weil diese akzeptierte Antwort nicht genau funktioniert. Ich habe eine Antwort gefunden, die meiner Meinung nach zu einfach ist, um nicht die beste zu sein:
Festlegen des Standard-WebAPI-Formatierers
Ich werde auch hier meinen Tipp abgeben.
WebApiConfig.cs
namespace com.yourstartup
{
using ...;
using System.Net.Http.Formatting;
...
config.Formatters.Clear(); //because there are defaults of XML..
config.Formatters.Add(new JsonMediaTypeFormatter());
}
Ich habe eine Frage dazu, woher die Standardwerte (zumindest die, die ich sehe) kommen. Sind sie .NET-Standards, oder vielleicht irgendwo anders erstellt (von jemand anderem auf meinem Projekt). Wie auch immer, hoffen, dass dies hilft.