ASP.NET Core MVC Formatters untuk input dan output protobuf.
Buffer Protokol adalah mekanisme yang dapat diperluas oleh bahasa Google, platform-netral, yang dapat diperluas untuk membuat serial data terstruktur-pikirkan XML, tetapi lebih kecil, lebih cepat, dan lebih sederhana.
Negosiasi konten terjadi ketika klien menentukan header Accept . Format default yang digunakan oleh ASP.NET Core adalah JSON. Tetapi klien dapat menentukan format ProtoBuf :
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 > ( ) ;
}Dalam contoh ini paket byndyusoft.net.http.protobuf digunakan.
Asp.net Core Apps yang perlu mendukung format protobuf dapat menambahkan paket nuget Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBuf dan mengkonfigurasi dukungan. Ada formatter terpisah untuk input dan output. Formatter input digunakan oleh pengikatan model. Formatter output digunakan untuk memformat respons.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBuf Format Protobuf Diimplementasikan Menggunakan ProtoBufSerializer dikonfigurasi dengan menelepon AddProtoBufFormatters :
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddProtoBufFormatters ( ) ;
} Kode sebelumnya membuat serial hasil menggunakan ProtoBufSerializer .
Klien dapat meminta format tertentu sebagai bagian dari URL, misalnya:
Pemetaan dari jalur permintaan harus ditentukan dalam rute yang digunakan API. Misalnya:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ Rute sebelumnya memungkinkan format yang diminta ditentukan sebagai ekstensi file opsional. Atribut [FormatFilter] memeriksa adanya nilai format dalam routedata dan memetakan format respons ke formatter yang sesuai ketika respons dibuat.
| Rute | Formatter |
|---|---|
| /API/Produk/5 | Formatter output default |
| /api/products/5.json | Formatter JSON (jika dikonfigurasi) |
| /api/products/5.protobuf | Formatter protobuf (jika dikonfigurasi) |
Untuk berkontribusi, Anda perlu mengatur lingkungan lokal Anda, lihat prasyarat. Untuk panduan kontribusi dan alur kerja, lihat siklus hidup pengembangan paket.
Tinjauan terperinci tentang cara berkontribusi dapat ditemukan di panduan yang berkontribusi.
Pastikan Anda telah memasang semua prasyarat berikut di mesin pengembangan Anda:
srctestsmaster Proyek