Hexarc Pactは、.NET/TypeScriptベースのプロジェクトのWeb APIを公開および消費するためのツールチェーンを提供します。
.NET Web APIプロジェクトをPACTで開発して、APIメタデータの単一の真実のソースを保持し、.NETエコシステム(マイクロサービス、デスクトップ、モバイルアプリケーション)またはTypeScriptを介してWeb上でそれを消費します。
| パッケージ | プラットフォーム | バージョン | ダウンロード |
|---|---|---|---|
Hexarch.Pact.Protocol | .NET 7.0+ | ||
Hexarch.Pact.AspNetCore | .NET 7.0+ | ||
Hexarch.Pact.Client | .NET 7.0+ | ||
Hexarch.Pact.Tool | .NET 7.0+ | ||
@hexarc/pact-tool | タイプスクリプト |
PACTタイプシステムは、最良の開発体験を得るために、いくつかのオーダーメイドのものを持つ.NET CLRタイプに基づいています。
協定タイプのシステム内にあるもの:
GuidおよびDateTimeを含む)PACT APIスキーマは、RPCのようなセマンティックを持つように設計されています。そうすることで、露出したAPIはこれらのルールに従う必要があります。
ApiControllerおよびRoute属性でマークされている必要があります。[Route("Entities")] )。HttpGetまたはHttpPost )でマークする必要があります。動詞属性にはエンドポイントパスが含まれる場合があります。その他は現時点ではサポートされていません。HttpGetメソッドには、 FromQuery属性を介してバインドする必要があるクエリパラメーターを使用できます。HttpPostメソッドには、要求本体であるパラメーターが1つだけ含まれている必要があります。Route属性で指定できます。メソッドパスがHTTP動詞属性で指定されていない場合、 Route 1から取得されるか、例外が発生します。PACTは、APIアノテーションにいくつかの有用な属性を提供します。
PactIgnoreAttribute 、APIスキーマから除外するAPIコントローラーまたは方法に適用できます。PactScopeAttribute APIコントローラーに適用して、APIスキーマの特定の範囲に分離できます。 デモAPIサーバーは、https://hexarc-demo-api.herokuapp.com/にあります。
PACT APIスキーマは、https://hexarc-demo-api.herokuapp.com/pact/schemaに公開されています。
APIクライアントを生成するには、以下の命令を使用します。
PACTを使用して典型的なWeb APIを公開および消費する方法をご覧ください。
Hexarc.Pact.AspNetCoreパッケージを.NET Web APIプロジェクトにインストールします。 dotnet add package Hexarc.Pact.AspNetCoreStartup.ConfigureServicesメソッドに協定スキーマ生成を追加します。 public void ConfigureServices ( IServiceCollection services )
{
services . AddControllers ( ) ;
// Register the Pact schema generation.
services . AddPactGeneration ( ) ;
}Startup.ConfigureメソッドでPACTミドルウェアを有効にします。 public void Configure ( IApplicationBuilder app )
{
// Enable the Pact middleware to expose the generated API schema.
app . UsePact ( ) ;
app . UseRouting ( ) ;
app . UseEndpoints ( endpoints => endpoints . MapControllers ( ) ) ;
} [ ApiController , Route ( "Misc" ) ]
public sealed class MiscController : ControllerBase
{
[ HttpGet ( nameof ( Ping ) ) ]
public String Ping ( [ FromQuery ] String message ) => $ "Hello, { message } " ;
}YOUR_API_HOST/pact/schemaアドレスを開き、PACT APIスキーマが生成されるようにします。Hexarc.Pact.Clientパッケージをインストールします。 dotnet add package Hexarc.Pact.ClientHexarc.Pact.Toolツールをインストールします。 dotnet tool install Hexarc.Pact.Tool Hexarc.Pact.Toolツールをインストールする前に、.NETツールマニフェストをセットアップする必要がある場合があります。
dotnet new tool-manifestpact.json構成を追加します。 {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}どこ
schemaUri協定APIスキーマへのリンクclientClassName生成されたAPIクライアントクラスの名前clientClassNamespace名前空間生成されたAPIクライアントクラスに入れる場所outputDirectory生成されたソースの出力ディレクトリdotnet pactこのコマンドは、 pact.json configを使用して同じフォルダーで実行する必要があります。
var client = new DemoClient ( new HttpClient { BaseAddress = new Uri ( "YOUR_API_HOST" ) } ) ;
var pong = await client . Misc . Ping ( "World" ) ;
Console . WriteLine ( pong ) ; // Prints "Hello, World" to the output. オープンソースプロジェクト向けのJetBrainsツールで構築されています。
MIT©Max Koverdyaev