Bei der Inhaltsverhandlung geht es darum, die beste Darstellung für einen bestimmten Inhalt auszuwählen Antwort, wenn mehrere Darstellungen verfügbar sind. bedeutet, hängt davon ab Der Header-Wert in der Anfrage wird akzeptiert und der Server sendet die Antwort. primär Der Mechanismus für die Inhaltsaushandlung in HTTP sind diese Anforderungsheader –
Accept– welche Medientypen von der Antwort akzeptiert werden können, z. B. „application/json“, „application/xml“ oder benutzerdefinierte Medientypen wie „application/ vnd.example" +xml"
Accept-Charset– Welche Zeichensätze sind akzeptabel, z. B. UTF-8 oder ISO 8859-1.
Accept-Encoding– Welche Inhaltskodierungen sind akzeptabel, z. B. gzip.
Accept-Language– Bevorzugen Sie natürliche Codierungssprachen wie „en-us“.
Der Server kann sich auch andere Teile der HTTP-Anfrage ansehen. Zum Beispiel, wenn Die Anfrage enthält den X-Requested-With-Header, der auf eine AJAX-Anfrage hinweist, und den Server Wenn kein Accept-Header vorhanden ist, wird möglicherweise standardmäßig JSON verwendet.
Bei der Inhaltsverhandlung beginnt die Pipeline mit HttpConfiguration-Objekt. Außerdem wird die Liste der Medienformatierer abgerufen HttpConfiguration.Formatters-Auflistung.
Als nächstes ruft die Pipeline IContentNegotiator.Negotiate auf und übergibt –
Die Negotiate-Methode gibt zwei Informationen zurück –
Wenn der Formatierer nicht gefunden wird, gibt die Negotiate-Methode null zurück und der Client empfängt HTTP-Fehler 406 (nicht akzeptabel).
Betrachten wir den folgenden StudentController.
using DemoWebApplication.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class StudentController : ApiController{ Liststudents = new List { new Student{ Id = 1, Name = "Mark" }, new Student{ Id = 2, Name = "John" } }; } }
Eines der Kriterien für einen RESTful-Service ist, dass der Kunde dazu in der Lage sein sollte Entscheiden Sie, welches Antwortformat sie wünschen – XML, JSON usw. Wird an den Server gesendet, der den Accept-Header enthält. Mithilfe des Accept-Headers kann der Client dies tun Geben Sie das Format der Antwort an. Zum Beispiel
Accept: application/xml returns XML Accept: application/json returns JSON
Die folgende Ausgabe zeigt, dass die Antwort XML ist, wenn wir den Accept-Header als XML übergeben Anwendung/XML.
Die Ausgabe unten zeigt, dass die Antwort JSON ist, wenn wir den Accept-Header als JSON übergeben Anwendung/JSON.
Bitte beachten Sie, wann die Antwort im gewünschten Format an den Kunden gesendet wird Der Content-Type-Header der Antwort wird auf den entsprechenden Wert gesetzt. Zum Beispiel, wenn Der Client fordert application/xml an und der Server sendet Daten im XML-Format. Legen Sie außerdem Content-Type=application/xml fest.
Wir können auch den Leistungsfaktor angeben. Im folgenden Beispiel hat XML eine höhere Qualität Faktor ist wichtiger als JSON, daher verwendet der Server einen XML-Formatierer und formatiert die Daten in XML. application/xml;q=0.8,application/json;q=0.5
Das obige ist der detaillierte Inhalt vonWas ist Inhaltsverhandlung in Asp.Net webAPI C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!