يوفر Hexarc Pact مجموعة أدوات لفضح واستهلاك واجهة برمجة تطبيقات الويب للمشاريع القائمة على .NET/TypeScript.
قم بتطوير مشروع API .NET Web الخاص بك مع 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 | TypeScript |
يعتمد نظام نوع المعدل على أنواع .NET CLR مع بعض الأنواع المخصصة لأفضل تجربة تطوير.
ما هو داخل نظام نوع الاتفاق:
Guid و DateTime )تم تصميم مخطط واجهة برمجة تطبيقات PACT للحصول على دلالي يشبه RPC. في القيام بذلك ، يجب أن يتبع واجهة برمجة التطبيقات المكشوفة هذه القواعد:
ApiController القياسية Route .[Route("Entities")] ).HttpGet أو HttpPost ). قد تحتوي سمات الفعل على مسار نقطة النهاية. البعض الآخر غير مدعوم في الوقت الحالي.HttpGet على معلمات استعلام يجب ربطها عبر سمة FromQuery .HttpPost على معلمة واحدة فقط وهي هيئة الطلب.Route . إذا لم يتم تحديد مسار الطريقة في سمة VERB HTTP ، فسيتم أخذها من Route الأول أو سيتم رفع استثناء.يوفر الاتفاق بعض السمات المفيدة لشرح API:
PactIgnoreAttribute على وحدات تحكم API أو طرق لاستبعادها من مخطط API.PactScopeAttribute على وحدات تحكم API ليتم عزلها في نطاق محدد في مخطط API. يمكن العثور على خادم API التجريبي على https://hexarc-demo-api.herokuapp.com/.
يتم كشف مخطط API PACT على https://hexarc-demo-api.herokuapp.com/pact/schema.
لإنشاء عميل API استخدم التعليمات أدناه.
تعرف على كيفية استخدام PACT لفضح واستهلاك واجهة برمجة تطبيقات الويب النموذجية.
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.Hexarc.Pact.Client في مشروع .NET: dotnet add package Hexarc.Pact.ClientHexarc.Pact.Tool في المشروع: dotnet tool install Hexarc.Pact.Tool قد تحتاج إلى إعداد بيان .NET Tools قبل تثبيت أداة Hexarc.Pact.Tool :
dotnet new tool-manifestpact.json في المشروع مع إعدادات توليد عميل API المطلوبة: {
"schemaUri" : " YOUR_API_HOST/pact/schema " ,
"clientClassName" : " DemoClient " ,
"clientClassNamespace" : " DemoNamespace " ,
"outputDirectory" : " Generated "
}أين
schemaUri - رابط إلى مخطط API اتفاقclientClassName - اسم لفئة عميل API التي تم إنشاؤهاclientClassNamespace - مساحة الاسم حيث يتم وضعها في فئة عميل API التي تم إنشاؤهاoutputDirectory - دليل الإخراج للمصادر التي تم إنشاؤها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