O Hexarc Pact fornece uma cadeia de ferramentas para expor e consumir API da Web para projetos baseados em .NET/TypeScript.
Desenvolva seu projeto .NET Web API com Pact para manter uma única fonte de verdade para os metadados da API e consumi -lo no ecossistema .NET (Microservices, Desktop e Mobile Applications) ou na Web via TypeScript.
| Pacote | Plataforma | Versão | Downloads |
|---|---|---|---|
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 |
O sistema de tipo de pacto é baseado nos tipos .NET CLR com alguns sob medida para a melhor experiência de desenvolvimento.
O que está dentro do sistema de tipo de pacto:
Guid e DateTime )O esquema da API do PACT foi projetado para ter uma semântica semelhante a RPC. Ao fazer isso, uma API exposta deve seguir estas regras:
ApiController padrão e Route .[Route("Entities")] ).HttpGet ou HttpPost ). Os atributos verbais podem conter um caminho de extremidade. Outros não são apoiados no momento.HttpGet podem ter parâmetros de consulta que devem ser vinculados através do atributo FromQuery .HttpPost devem ter apenas um parâmetro que é o órgão de solicitação.Route . Se o caminho do método não for especificado no atributo de verbo http, ele será retirado da Route um ou uma exceção será levantada.O Pact fornece alguns atributos úteis para anotação de API:
PactIgnoreAttribute pode ser aplicado aos controladores ou métodos da API a ser excluído de um esquema de API.PactScopeAttribute pode ser aplicado aos controladores da API para serem isolados em escopo específico em um esquema de API. O servidor de Demo API pode ser encontrado em https://hexarc-demo-api.herokuapp.com/.
O esquema da API do PACT é exposto em https://hexarc-demo-api.herokuapp.com/pact/schema.
Para gerar um cliente da API, use a instrução abaixo.
Descubra como usar o Pact para expor e consumir uma API da Web típica.
Hexarc.Pact.AspNetCore em um projeto da API .NET Web: dotnet add package Hexarc.Pact.AspNetCoreStartup.ConfigureServices : public void ConfigureServices ( IServiceCollection services )
{
services . AddControllers ( ) ;
// Register the Pact schema generation.
services . AddPactGeneration ( ) ;
}Startup.Configure : 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 para garantir que o esquema da API do PACT seja gerado.Hexarc.Pact.Client em um projeto .NET: dotnet add package Hexarc.Pact.ClientHexarc.Pact.Tool no projeto: dotnet tool install Hexarc.Pact.Tool Pode ser necessário configurar um manifesto .NET Tools antes de instalar a ferramenta Hexarc.Pact.Tool :
dotnet new tool-manifestpact.json no projeto com as configurações desejadas de geração de clientes da API: {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}onde
schemaUri - Link para um esquema de API PACTclientClassName - Nome para uma classe de cliente da API geradaclientClassNamespace - Namespace onde colocar na classe Gerated API ClientoutputDirectory - Diretório de saída para as fontes geradasdotnet pact Este comando deve ser executado na mesma pasta com a configuração pact.json .
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. Construído com ferramentas JetBrains para projetos de código aberto.
MIT © Max Koverdyaev