Hexarc PACT fournit une chaîne d'outils pour exposer et consommer une API Web pour les projets basés sur .NET / TypeScript.
Développez votre projet API Web .NET avec PACT pour conserver une seule source de vérité pour les métadonnées de l'API et le consommer à travers l'écosystème .NET (microservices, applications de bureau et mobile) ou sur le Web via TypeScript.
| Emballer | Plate-forme | Version | Téléchargements |
|---|---|---|---|
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 | Manuscrit |
Le système de type PACT est basé sur les types de CLR .NET avec certains sur mesure pour la meilleure expérience de développement.
Qu'y a-t-il à l'intérieur du système de type pacte:
Guid et DateTime )Le schéma API PACT est conçu pour avoir un sémantique de type RPC. Ce faisant, une API exposée doit suivre ces règles:
ApiController et Route .[Route("Entities")] ).HttpGet ou HttpPost ). Les attributs du verbe peuvent contenir un chemin de point final. D'autres ne sont pas soutenus pour le moment.HttpGet peuvent avoir des paramètres de requête qui doivent être liés via l'attribut FromQuery .HttpPost ne doivent avoir qu'un seul paramètre qui est le corps de demande.Route . Si le chemin de méthode n'est pas spécifié dans l'attribut Verbe HTTP, il sera prélevé sur la Route un ou une exception sera soulevée.PACT fournit quelques attributs utiles pour l'annotation de l'API:
PactIgnoreAttribute peut être appliqué aux contrôleurs API ou à des méthodes à exclure d'un schéma API.PactScopeAttribute peut être appliqué aux contrôleurs d'API pour être isolés en portée spécifique dans un schéma API. Le serveur API de démonstration peut être trouvé sur https://hexarc-demo-api.herokuapp.com/.
Le schéma API PACT est exposé sur https://hexarc-deno-api.herokuapp.com/pact/schema.
Pour générer un client API, utilisez l'instruction ci-dessous.
Découvrez comment utiliser PACT pour exposer et consommer une API Web typique.
Hexarc.Pact.AspNetCore dans un projet 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 pour vous assurer que le schéma API PACT est généré.Hexarc.Pact.Client dans un projet .NET: dotnet add package Hexarc.Pact.ClientHexarc.Pact.Tool dans le projet: dotnet tool install Hexarc.Pact.Tool Vous devrez peut-être configurer un manifeste d'outils .NET avant d'installer l'outil Hexarc.Pact.Tool :
dotnet new tool-manifestpact.json dans le projet avec les paramètres de génération de clients API souhaités: {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}où
schemaUri - Lien vers un schéma API PACTclientClassName - Nom d'une classe client API généréeclientClassNamespace - Espace de noms où mettre dans la classe client API généréeoutputDirectory - Répertoire de sortie pour les sources généréesdotnet pact Cette commande doit être effectuée dans le même dossier avec la configuration 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. Construit avec des outils JetBrains pour les projets open source.
MIT © Max Koverdyaev