HexArc Pact는 .NET/TypeScript 기반 프로젝트를위한 웹 API를 노출 및 소비하기위한 툴체인을 제공합니다.
API 메타 데이터에 대한 진실의 단일 소스를 유지하고 .NET Ecosystem (마이크로 서비스, 데스크탑 및 모바일 응용 프로그램) 또는 TypeScript를 통해 웹에 소비하기 위해 PACT를 사용하여 .NET 웹 API 프로젝트를 개발하십시오.
| 패키지 | 플랫폼 | 버전 | 다운로드 |
|---|---|---|---|
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 | TypeScript |
PACT 유형 시스템은 최상의 개발 경험을위한 맞춤형 유형의 .NET CLR 유형을 기반으로합니다.
PACT 유형 시스템 내부의 내용 :
Guid 및 DateTime 포함)PACT API 스키마는 RPC와 같은 시맨틱을 갖도록 설계되었습니다. 그렇게함으로써 노출 된 API는 다음과 같은 규칙을 따라야합니다.
ApiController 및 Route 속성이 표시되어야합니다.[Route("Entities")] ).HttpGet 또는 HttpPost )가 표시되어야합니다. 동사 속성에는 엔드 포인트 경로가 포함될 수 있습니다. 다른 사람들은 현재 지원되지 않습니다.HttpGet 메소드에는 FromQuery 속성을 통해 바인딩 해야하는 쿼리 매개 변수가있을 수 있습니다.HttpPost 메소드에는 요청 본문 인 매개 변수가 하나만 있어야합니다.Route 속성에 지정할 수 있습니다. 메소드 경로가 HTTP 동사 속성에 지정되지 않은 경우 Route 1에서 가져 오거나 예외가 제기됩니다.PACT는 API 주석에 유용한 속성을 제공합니다.
PactIgnoreAttribute API 컨트롤러 또는 API 스키마에서 제외 될 방법에 적용 할 수 있습니다.PactScopeAttribute API 컨트롤러에 적용하여 API 스키마에서 특정 범위로 분리 될 수 있습니다. Demo API 서버는 https://hexarc-demo-api.herokuapp.com/에서 찾을 수 있습니다.
PACT API 스키마는 https://hexarc-demo-api.herokuapp.com/pact/schema에 노출됩니다.
API 클라이언트를 생성하려면 아래 명령을 사용하십시오.
PACT를 사용하여 일반적인 웹 API를 노출시키고 소비하는 방법을 찾으십시오.
Hexarc.Pact.AspNetCore 패키지를 설치하십시오. dotnet add package Hexarc.Pact.AspNetCoreStartup.ConfigureServices 메소드에서 PACT 스키마 생성을 추가하십시오. 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