HEXARC PACT menyediakan toolchain untuk mengekspos dan mengonsumsi API Web untuk proyek berbasis .NET/TypeScript.
Kembangkan proyek API .NET Web Anda dengan PACT untuk menjaga satu sumber kebenaran untuk metadata API dan mengkonsumsinya di seluruh ekosistem.
| Kemasan | Platform | Versi | Unduhan |
|---|---|---|---|
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 | Naskah |
Sistem tipe pakta didasarkan pada tipe .NET CLR dengan beberapa yang dipesan lebih dahulu untuk pengalaman pengembangan terbaik.
Apa yang ada di dalam sistem jenis pakta:
Guid dan DateTime )Skema PACT API dirancang untuk memiliki semantik seperti RPC. Dengan melakukan itu, API yang terbuka harus mengikuti aturan ini:
ApiController dan Route standar.[Route("Entities")] ).HttpGet atau HttpPost ). Atribut kata kerja mungkin berisi jalur titik akhir. Yang lain tidak didukung saat ini.HttpGet dapat memiliki parameter kueri yang harus diikat melalui atribut FromQuery .HttpPost harus memiliki hanya satu parameter yang merupakan badan permintaan.Route . Jika jalur metode tidak ditentukan dalam atribut kata kerja http, itu akan diambil dari Route satu atau pengecualian akan dinaikkan.Pakta memberikan beberapa atribut yang berguna untuk anotasi API:
PactIgnoreAttribute dapat diterapkan pada pengontrol API atau metode yang akan dikeluarkan dari skema API.PactScopeAttribute dapat diterapkan pada pengontrol API untuk diisolasi ke dalam ruang lingkup spesifik dalam skema API. Demo API Server dapat ditemukan di https://hexarc-demo-api.herokuapp.com/.
Skema API PACT diekspos di https://hexarc-demo-api.herokuapp.com/pact/schema.
Untuk menghasilkan klien API, gunakan instruksi di bawah ini.
Cari tahu cara menggunakan pakta untuk mengekspos dan mengonsumsi API Web yang khas.
Hexarc.Pact.AspNetCore dalam proyek 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 untuk memastikan skema API PACT dihasilkan.Hexarc.Pact.Client di proyek .net: dotnet add package Hexarc.Pact.ClientHexarc.Pact.Tool dalam proyek: dotnet tool install Hexarc.Pact.Tool Anda mungkin perlu mengatur manifesto alat .net sebelum menginstal alat Hexarc.Pact.Tool :
dotnet new tool-manifestpact.json dalam proyek dengan pengaturan pembuatan klien API yang diinginkan: {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}Di mana
schemaUri - Tautan ke Skema API paktaclientClassName - Nama untuk kelas klien API yang dihasilkanclientClassNamespace - Namespace di mana harus dimasukkan ke dalam kelas klien API yang dihasilkanoutputDirectory - Direktori Output untuk sumber yang dihasilkandotnet pact Perintah ini harus dilakukan di folder yang sama dengan konfigurasi 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. Dibangun dengan alat JetBrains untuk proyek open source.
MIT © Max Kovertyaev