ASP.NETコアMVCプロトブフ入力と出力用のフォーマッツ。
プロトコルバッファーは、Googleの言語中立、プラットフォーム中立、拡張可能な構造化データのための拡張可能なメカニズムです。
コンテンツの交渉は、クライアントがAcceptヘッダーを指定するときに発生します。 ASP.NETコアで使用されるデフォルトの形式はJSONです。ただし、クライアントは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 > ( ) ;
}この例では、byndyusoft.net.http.protobufパッケージが使用されています。
protobuf形式をサポートする必要があるASP.NETコアアプリは、 Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBuf nugetパッケージを追加してサポートを構成することができます。入力と出力用の個別のフォーマッタがあります。入力フォーマッタは、モデルバインディングによって使用されます。出力フォーマッタは、応答をフォーマットするために使用されます。
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBufProtoBufSerializerを使用して実装されたProtobuf Formattersは、 AddProtoBufFormatters呼び出すことによって構成されています。
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddProtoBufFormatters ( ) ;
}前のコードは、 ProtoBufSerializerを使用して結果をシリアル化します。
たとえば、クライアントはURLの一部として特定の形式を要求できます。
リクエストパスからのマッピングは、APIが使用しているルートで指定する必要があります。例えば:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{前のルートでは、要求された形式をオプションのファイル拡張子として指定できます。 [FormatFilter]属性は、Routedataのフォーマット値の存在をチェックし、応答が作成されたときに適切なフォーマッタに応答形式をマップします。
| ルート | フォーマッタ |
|---|---|
| /API/製品/5 | デフォルトの出力フォーマッタ |
| /api/products/5.json | JSONフォーマッタ(構成されている場合) |
| /api/products/5.protobuf | Protobuf Formatter(構成されている場合) |
貢献するには、地元の環境をセットアップする必要があります。前提条件を確認してください。貢献およびワークフローガイドについては、パッケージ開発ライフサイクルを参照してください。
貢献方法の詳細な概要は、寄稿ガイドに記載されています。
開発マシンに次のすべての前提条件をインストールしていることを確認してください。
srcにパッケージロジックを実装しますtestsでユニットテストを追加または追加または追加するmasterブランチをターゲットにします