Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist Inhaltsverhandlung in Asp.Net webAPI C#?

Was ist Inhaltsverhandlung in Asp.Net webAPI C#?

王林
王林nach vorne
2023-09-11 17:13:01622Durchsuche

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 –

  • Der zu serialisierende Objekttyp
  • Eine Sammlung von Medienformatierern
  • HTTP-Anfrage

Die Negotiate-Methode gibt zwei Informationen zurück –

    Welche one to use Der Medientyp der Antwort des Formatierers

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{
      List<Student> students = new List<Student>{
         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.

什么是 Asp.Net webAPI C# 中的内容协商?

Die Ausgabe unten zeigt, dass die Antwort JSON ist, wenn wir den Accept-Header als JSON übergeben Anwendung/JSON.

什么是 Asp.Net webAPI C# 中的内容协商?

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.

什么是 Asp.Net webAPI C# 中的内容协商?

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

什么是 Asp.Net webAPI C# 中的内容协商?

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen