SPACT Hexarc เป็นเครื่องมือสำหรับการเปิดเผยและใช้ Web API สำหรับโครงการ. NET/TypeScript
พัฒนาโครงการ. NET Web API ของคุณด้วย PACT เพื่อรักษาแหล่งความจริงเดียวสำหรับข้อมูลเมตา API และใช้งานได้ทั่วทั้งระบบนิเวศ. NET (Microservices, เดสก์ท็อปและแอปพลิเคชันมือถือ) หรือบนเว็บผ่านตัวพิมพ์
| บรรจุุภัณฑ์ | แพลตฟอร์ม | รุ่น | การดาวน์โหลด |
|---|---|---|---|
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 )Schema Pact API ได้รับการออกแบบให้มีความหมายคล้าย RPC ในการทำเช่นนั้น API ที่เปิดเผยจะต้องปฏิบัติตามกฎเหล่านี้:
ApiController มาตรฐานและแอตทริบิวต์ Route[Route("Entities")] )HttpGet หรือ HttpPost ) แอตทริบิวต์คำกริยาอาจมีเส้นทางปลายทาง คนอื่นไม่ได้รับการสนับสนุนในขณะนี้HttpGet สามารถมีพารามิเตอร์การสืบค้นซึ่งจะต้องผูกผ่านแอตทริบิวต์ FromQueryHttpPost จะต้องมีพารามิเตอร์เดียวเท่านั้นซึ่งเป็นตัวคำขอRoute หากไม่ได้ระบุเส้นทางเมธอดในแอตทริบิวต์ HTTP คำกริยามันจะถูกนำมาจาก Route ที่หนึ่งหรือจะยกข้อยกเว้นPACT ให้คุณลักษณะที่เป็นประโยชน์สำหรับคำอธิบายประกอบ API:
PactIgnoreAttribute สามารถนำไปใช้กับตัวควบคุม API หรือวิธีการที่จะแยกออกจากสคีมา APIPactScopeAttribute สามารถนำไปใช้กับตัวควบคุม API เพื่อแยกออกเป็นขอบเขตเฉพาะในสคีมา API Demo API Server สามารถดูได้ที่ https://hexarc-demo-api.herokuapp.com/
Schema Pact API ถูกเปิดเผยที่ https://hexarc-demo-api.herokuapp.com/pact/schema
เพื่อสร้างไคลเอนต์ API ให้ใช้คำสั่งด้านล่าง
ค้นหาวิธีใช้สนธิสัญญาเพื่อเปิดเผยและบริโภคเว็บ API ทั่วไป
Hexarc.Pact.AspNetCore ในโครงการ. 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 เพื่อให้แน่ใจว่า Schema PACT API ถูกสร้างขึ้นHexarc.Pact.Client ในโครงการ. NET: dotnet add package Hexarc.Pact.ClientHexarc.Pact.Tool ในโครงการ: dotnet tool install Hexarc.Pact.Tool คุณอาจต้องตั้งค่าเครื่องมือ. NET Manifesto ก่อนที่จะติดตั้งเครื่องมือ Hexarc.Pact.Tool :
dotnet new tool-manifestpact.json config ในโครงการด้วยการตั้งค่าการสร้างไคลเอนต์ API ที่ต้องการ: {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}ที่ไหน
schemaUri - เชื่อมโยงไปยัง Schema Pact APIclientClassName - ชื่อสำหรับคลาสไคลเอนต์ API ที่สร้างขึ้นclientClassNamespace - เนมสเปซที่จะใส่ในคลาสไคลเอนต์ API ที่สร้างขึ้นoutputDirectory - ไดเรกทอรีเอาต์พุตสำหรับแหล่งที่มาที่สร้างขึ้นdotnet pact คำสั่งนี้จะต้องดำเนินการในโฟลเดอร์เดียวกันกับ pact.json config
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