توثيق واجهات API ذات الإصدارات
أتِيحوا التوثيق لإصدارات متعددة من API
توثيق واجهات API ذات الإصدارات درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
مستند واحد لكل إصدار
عندما تتضمن واجهة API عدة إصدارات، ستحتاج عادةً إلى مستند OpenAPI منفصل لكل إصدار حتى يرى المستهلكون نقاط النهاية ذات الصلة بهم فقط.
// /openapi/v1.json -> only v1 endpoints
// /openapi/v2.json -> only v2 endpointsموفّر أوصاف إصدارات API
توفّر Asp.Versioning الواجهة IApiVersionDescriptionProvider التي تسرد كل إصدار API تم اكتشافه. ويمكنك التكرار عليها لتسجيل مستند لكل إصدار.
var provider = app.Services
.GetRequiredService<IApiVersionDescriptionProvider>();
foreach (var desc in provider.ApiVersionDescriptions)
{
// desc.GroupName is e.g. "v1", "v2"
}تسجيل مستند لكل إصدار
استدعِ AddOpenApi مرة واحدة لكل مجموعة إصدارات، وسمِّ كل مستند باسم المجموعة.
builder.Services
.AddApiVersioning()
.AddApiExplorer(o =>
{
o.GroupNameFormat = "'v'VVV";
o.SubstituteApiVersionInUrl = true;
});
builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");تصفية نقاط النهاية في المستند الصحيح
استخدم محوّل مستند أو الشرط ShouldInclude حتى يحتوي كل مستند على نقاط نهاية إصداره فقط، وفق مطابقة اسم المجموعة.
builder.Services.AddOpenApi("v1", options =>
{
options.ShouldInclude = description =>
description.GroupName == "v1";
});تعيين المستندات
تخدم MapOpenApi باستخدام النمط الافتراضي كل مستند مُسمّى على المسار /openapi/{documentName}.json.
app.MapOpenApi();
// /openapi/v1.json and /openapi/v2.json both availableتعيين معلومات كل مستند
امنح مستند كل إصدار عنوانه وإصداره الخاصين باستخدام محوّل، حتى توضّح المستندات محتواها بنفسها.
builder.Services.AddOpenApi("v2", options =>
{
options.AddDocumentTransformer((doc, ctx, ct) =>
{
doc.Info.Title = "Catalog API v2";
doc.Info.Version = "2.0";
return Task.CompletedTask;
});
});تمييز الإصدارات المهجورة في المستندات
إذا كان إصدار ما مهجورًا، فأظهر ذلك في وصف مستنده حتى يرى المستهلكون التحذير في واجهة المستخدم.
options.AddDocumentTransformer((doc, ctx, ct) =>
{
if (ctx.DocumentName == "v1")
doc.Info.Description = "DEPRECATED - migrate to v2.";
return Task.CompletedTask;
});استبدال الإصدار في عناوين URL
يعيد SubstituteApiVersionInUrl = true كتابة رمز المسار {version:apiVersion} إلى الإصدار الفعلي (مثل v1) في المستند، فتظهر المسارات بصورة واضحة.
// Without: /api/v{version}/products
// With: /api/v1/productsعلامة تبويب لكل إصدار في واجهة المستخدم
يمكن لمعظم العارضات عرض قائمة منسدلة تتضمن جميع المستندات. اضبط واجهة المستخدم لتشير إلى ملف JSON الخاص بكل إصدار.
app.MapScalarApiReference(options =>
{
options.AddDocument("v1", "API v1", "/openapi/v1.json");
options.AddDocument("v2", "API v2", "/openapi/v2.json");
});توثيق بنى الطلبات والاستجابات
بما أن v2 قد يغيّر DTOs، امنح كل إصدار أنواع DTO الخاصة به. وعندها يعرض OpenAPI مخططات منفصلة لكل مستند تلقائيًا.
// V1 DTO
public record ProductV1(int Id, string Name);
// V2 DTO (breaking change)
public record ProductV2(int Id, string Title, decimal Price);تجميع المكونات
التدفق الكامل هو: ضبط إدارة الإصدارات وAPI explorer، وتسجيل مستند OpenApi واحد لكل إصدار مع عامل تصفية، وتعيينها، ثم توجيه واجهة المستخدم إلى كل مستند.
builder.Services.AddApiVersioning().AddApiExplorer(o =>
{
o.GroupNameFormat = "'v'VVV";
o.SubstituteApiVersionInUrl = true;
});
builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");
// ...
app.MapOpenApi();
app.MapScalarApiReference();تحقق سريع
تأكد من كيفية إنشاء المستندات ذات الإصدارات.
مراجعة
لقد وثّقت واجهات API ذات الإصدارات:
- سجّل مستند OpenAPI مُسمّى لكل إصدار باستخدام
AddOpenApi("vN"). - يسرد
IApiVersionDescriptionProviderالإصدارات، بينما يصفّيShouldIncludeنقاط النهاية. - يعرض
SubstituteApiVersionInUrlمسارات تتضمن الإصدار الفعلي. - وجّه واجهة المستخدم إلى كل مستند للحصول على عرض خاص بكل إصدار.
بهذا تكتمل دورة إدارة الإصدارات وOpenAPI.
الأسئلة الشائعة
هل درس «توثيق واجهات API ذات الإصدارات» مجاني؟
نعم — نص درس «توثيق واجهات API ذات الإصدارات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «توثيق واجهات API ذات الإصدارات»؟
أتِيحوا التوثيق لإصدارات متعددة من API تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «توثيق واجهات API ذات الإصدارات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استراتيجيات إصدار إصدارات API
- تهيئة Asp.Versioning
- إنشاء مستندات OpenAPI
- توثيق واجهات API ذات الإصدارات