ASP.NETコアMVCは、メッセージパック入力と出力用のフォーマッタです。
メッセージパックは、効率的なバイナリシリアル化形式です。 JSONなどの複数の言語でデータを交換できます。しかし、それはより速く、より小さくなっています。小さな整数は単一のバイトにエンコードされ、典型的な短い文字列は、文字列自体に加えて1つの追加バイトのみを必要とします。
コンテンツの交渉は、クライアントがAcceptヘッダーを指定するときに発生します。 ASP.NETコアで使用されるデフォルトの形式はJSONです。ただし、クライアントはMessagePack形式を指定できます。
using ( var httpClient = new HttpClient ( ) )
{
client . DefaultRequestHeaders . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "application/msgpack" ) ) ;
var response = await client . GetAsync ( "/api/products/5" ) ;
var product = response . Content . ReadFromMessagePackAsync < Product > ( ) ;
}この例では、byndyusoft.net.http.messagepackパッケージが使用されています。
MessagePack形式をサポートする必要があるASP.NETコアアプリは、 Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack nugetパッケージを追加してサポートを構成できます。入力と出力用の個別のフォーマッタがあります。入力フォーマッタは、モデルバインディングによって使用されます。出力フォーマッタは、応答をフォーマットするために使用されます。
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.MessagePackMessagePackSerializerを使用して実装されたmessagepackフォーマッタは、 AddMessagePackFormattersを呼び出すことによって構成されます。
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddMessagePackFormatters ( ) ;
}前述のコードは、 MessagePackSerializerを使用して結果をシリアル化します。
メッセージパックフォーマッタの機能は、 Microsoft.AspNetCore.Mvc.MvcMessagePackOptions.SerializerOptionsを使用して構成できます。
services . AddMvcCore ( )
. AddMessagePackFormatters (
options =>
{
options . SerializerOptions
. WithResolver ( TypelessContractlessStandardResolver . Instance )
. WithCompression ( MessagePackCompression . Lz4Block )
. WithSecurity ( MessagePackSecurity . TrustedData ) ;
} ) ; たとえば、クライアントは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.msgpack | メッセージパックフォーマッタ(設定されている場合) |
貢献するには、地元の環境をセットアップする必要があります。前提条件を確認してください。貢献およびワークフローガイドについては、パッケージ開発ライフサイクルを参照してください。
貢献方法の詳細な概要は、寄稿ガイドに記載されています。
開発マシンに次のすべての前提条件をインストールしていることを確認してください。
srcにパッケージロジックを実装しますtestsでユニットテストを追加または追加または追加するmasterブランチをターゲットにします