Hexarc Pact предоставляет инструмент для разоблачения и потребления веб-API для проектов .NET/TypeScript.
Разработайте свой проект .NET Web API с PACT, чтобы сохранить единый источник истины для метаданных API и употреблять его в экосистеме .NET (микросервисы, настольные и мобильные приложения) или в Интернете через TypeScript.
| Упаковка | Платформа | Версия | Загрузки |
|---|---|---|---|
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 с некоторыми сделанными на заказ для лучшего опыта разработки.
Что внутри системы типа PACT:
Guid и DateTime )Схема PACT API предназначена для того, чтобы иметь RPC-подобную семантику. При этом открытый API должен следовать этим правилам:
ApiController и Route .[Route("Entities")] ).HttpGet или HttpPost ). Атрибуты глагола могут содержать путь конечной точки. Другие не поддерживаются в данный момент.HttpGet могут иметь параметры запроса, которые должны быть связаны через атрибут FromQuery .HttpPost должны иметь только один параметр, который является корпусом запроса.Route . Если путь метода не указан в атрибуте глагола HTTP, он будет взят из Route One или исключение будет поднято.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 для разоблачения и потребления типичного веб -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 : 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 в проекте .NET: dotnet add package Hexarc.Pact.ClientHexarc.Pact.Tool в проекте: dotnet tool install Hexarc.Pact.Tool Вам может потребоваться настроить манифест инструментов .NET перед установкой инструмента Hexarc.Pact.Tool :
dotnet new tool-manifestpact.json в проект с желаемыми настройками генерации клиента API: {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}где
schemaUri - Ссылка на схему PACT APIclientClassName - Имя для сгенерированного класса клиента APIclientClassNamespace - Пространство имен, куда поместить сгенерированный класс клиента APIoutputDirectory - выходной каталог для сгенерированных источниковdotnet pact Эта команда должна выполняться в той же папке с конфигурацией 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. Построен с инструментами JetBrains для проектов с открытым исходным кодом.
MIT © MAX Koverdyaev