ASP.NET -Kern -MVC -Formatter für Protobufeingang und Ausgabe.
Protokollpuffer sind die sprachneutrale, plattformneutrale, erweiterbare Mechanismus von Google zur Serialisierung strukturierter Daten-denken Sie an XML, aber kleiner, schneller und einfacher.
Inhaltsverhandlungen treten auf, wenn der Kunde einen Accept angibt. Das von ASP.NET Core verwendete Standardformat ist JSON. Der Client kann jedoch das ProtoBuf -Format angeben:
using ( var httpClient = new HttpClient ( ) )
{
client . DefaultRequestHeaders . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "application/protobuf" ) ) ;
var response = await client . GetAsync ( "/api/products/5" ) ;
var product = response . Content . ReadFromProtoBufAsync < Product > ( ) ;
}In diesem Beispiel wird Byndyusoft.net.http.Protobuf -Paket verwendet.
ASP.NET CORE -Apps, die das ProtoBUF -Format unterstützen müssen, können die Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBuf -Nuget -Pakete hinzufügen und Support konfigurieren. Es gibt separate Formatter für Eingabe und Ausgabe. Eingangsformatter werden durch Modellbindung verwendet. Ausgangsformatters werden verwendet, um Antworten zu formatieren.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBuf Mit ProtoBufSerializer implementierte Protobuf -Formattere werden durch Aufrufen AddProtoBufFormatters konfiguriert:
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddProtoBufFormatters ( ) ;
} Der vorhergehende Code serialisiert Ergebnisse mit ProtoBufSerializer .
Clients können beispielsweise ein bestimmtes Format als Teil der URL anfordern:
Die Zuordnung aus dem Anforderungspfad sollte in der Route angegeben werden, die die API verwendet. Zum Beispiel:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ Die vorhergehende Route ermöglicht das angeforderte Format als optionale Dateierweiterung. Die Attributprüfungen [FormatFilter] für die Existenz des Formatwerts in der Routedata und ordnen das Antwortformat dem entsprechenden Formatierer ab, wenn die Antwort erstellt wird.
| Route | Formatierer |
|---|---|
| /API/Produkte/5 | Das Standardausgangsformatierer |
| /api/products/5.json | Das JSON -Formatierer (falls konfiguriert) |
| /api/products/5.Protobuf | Das Protobuf -Formatierer (falls konfiguriert) |
Um einen Beitrag zu leisten, müssen Sie Ihre lokale Umgebung einrichten und Voraussetzungen sehen. Für den Beitrags- und Workflow -Leitfaden finden Sie den Lebenszyklus für Paketentwicklung.
Ein detaillierter Überblick über den Beitrag zum Beitrag finden Sie im Beitrag zur beitragenden Anleitung.
Stellen Sie sicher, dass Sie alle folgenden Voraussetzungen auf Ihrer Entwicklungsmaschine installiert haben:
srctests hinzu odermaster -Zweigstelle des Projekts