HEXARC PACT proporciona una cadena de herramientas para exponer y consumir API web para proyectos basados en .NET/TypeScript.
Desarrolle su proyecto de API web .NET con PACT para mantener una sola fuente de verdad para los metadatos de API y consumirlo en el ecosistema .NET (microservicios, escritorio y aplicaciones móviles) o en la web a través de TypeScript.
| Paquete | Plataforma | Versión | Descargas |
|---|---|---|---|
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 | Mecanografiado |
El sistema de tipo PACT se basa en los tipos de CLR .NET con algunos a medida para la mejor experiencia de desarrollo.
¿Qué hay dentro del sistema de tipo de pacto?
Guid y DateTime )El esquema PACT API está diseñado para tener una semántica similar a RPC. Al hacerlo, una API expuesta debe seguir estas reglas:
ApiController y Route .[Route("Entities")] ).HttpGet o HttpPost ). Los atributos verbales pueden contener una ruta de punto final. Otros no son apoyados en este momento.HttpGet pueden tener parámetros de consulta que deben estar enlaces a través del atributo FromQuery .HttpPost deben tener solo un parámetro que es el cuerpo de solicitud.Route . Si la ruta del método no se especifica en el atributo verbal HTTP, se tomará de la Route uno o se planteará una excepción.PACT proporciona algunos atributos útiles para la anotación de API:
PactIgnoreAttribute se puede aplicar a los controladores o métodos API que se excluirán de un esquema API.PactScopeAttribute se puede aplicar a los controladores API para aislarse en un alcance específico en un esquema API. El servidor API de demostración se puede encontrar en https://hexarc-demo-api.herokuapp.com/.
El esquema de la API PACT está expuesto a https://hexarc-demo-api.herokuapp.com/pact/schema.
Para generar un cliente API, use la instrucción a continuación.
Descubra cómo usar PACT para exponer y consumir una API web típica.
Hexarc.Pact.AspNetCore en un proyecto de API web .NET: 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 garantizar que se genere el esquema de la API PACT.Hexarc.Pact.Client en un proyecto .NET: dotnet add package Hexarc.Pact.ClientHexarc.Pact.Tool en el proyecto: dotnet tool install Hexarc.Pact.Tool Es posible que deba configurar un manifiesto de .NET Tools antes de instalar la herramienta Hexarc.Pact.Tool :
dotnet new tool-manifestpact.json en el proyecto con una configuración de generación de clientes API deseada: {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}dónde
schemaUri - Enlace a un esquema de PACT APIclientClassName : nombre para una clase de cliente API generadaclientClassNamespace : espacio de nombres dónde colocar la clase de cliente API generadaoutputDirectory - Directorio de salida para las fuentes generadasdotnet pact Este comando debe realizarse en la misma carpeta con la configuración 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. Construido con herramientas de JetBrains para proyectos de código abierto.
MIT © Max Koverdyaev