تهيئة Asp.Versioning
أعدّوا إدارة الإصدارات في ASP.NET Core
تهيئة Asp.Versioning درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
حزمة Asp.Versioning
توجد إمكانية إصدار نسخ API في ASP.NET Core ضمن حزم Asp.Versioning التي يديرها المجتمع (وهي الخلف لـ Microsoft.AspNetCore.Mvc.Versioning).
dotnet add package Asp.Versioning.Mvc
dotnet add package Asp.Versioning.Mvc.ApiExplorerAddApiVersioning
سجّل إصدار النسخ باستخدام AddApiVersioning. وتتحكم الخيارات في الإصدار الافتراضي وكيفية التعامل مع الإصدارات المفقودة.
builder.Services.AddApiVersioning(options =>
{
options.DefaultApiVersion = new ApiVersion(1, 0);
options.AssumeDefaultVersionWhenUnspecified = true;
options.ReportApiVersions = true;
});ReportApiVersions
تضيف ReportApiVersions = true ترويستي الاستجابة api-supported-versions وapi-deprecated-versions، حتى يتمكن العملاء من اكتشاف ما هو متاح.
// Response headers:
// api-supported-versions: 1.0, 2.0
// api-deprecated-versions: 1.0اختيار قارئ الإصدار
يحدد ApiVersionReader مصدر قراءة الإصدار. ويقرأ UrlSegmentApiVersionReader الإصدار من مسار المسار.
options.ApiVersionReader = new UrlSegmentApiVersionReader();دمج القرّاء
اقبل الإصدار من عدة مواضع في الوقت نفسه باستخدام ApiVersionReader.Combine.
options.ApiVersionReader = ApiVersionReader.Combine(
new UrlSegmentApiVersionReader(),
new HeaderApiVersionReader("X-Api-Version"),
new QueryStringApiVersionReader("api-version"));إضافة API Explorer
اربط AddApiExplorer حتى تتكامل إدارة الإصدارات مع OpenAPI. وتتحكم سلسلة التنسيق في شكل أسماء مجموعات الإصدارات.
builder.Services
.AddApiVersioning(options => { /* ... */ })
.AddApiExplorer(options =>
{
options.GroupNameFormat = "'v'VVV";
options.SubstituteApiVersionInUrl = true;
});إدارة إصدارات وحدة تحكم
أضف السمة [ApiVersion] إلى وحدة تحكم، وضع العنصر النائب للإصدار في قالب المسار.
[ApiVersion(1.0)]
[Route("api/v{version:apiVersion}/products")]
public class ProductsV1Controller : ControllerBase
{
[HttpGet]
public IActionResult Get() => Ok(new { version = "1.0" });
}إصدار ثانٍ
تقدّم وحدة تحكم منفصلة الإصدار v2 باستخدام قالب المسار نفسه. ويوجّه المقطع {version:apiVersion} الطلبات إلى وحدة التحكم الصحيحة.
[ApiVersion(2.0)]
[Route("api/v{version:apiVersion}/products")]
public class ProductsV2Controller : ControllerBase
{
[HttpGet]
public IActionResult Get() =>
Ok(new { version = "2.0", extra = true });
}إصدارات متعددة في وحدة تحكم واحدة
يمكن لوحدة تحكم واحدة تقديم عدة إصدارات، مع تعيين الإجراءات الفردية باستخدام [MapToApiVersion].
[ApiVersion(1.0)]
[ApiVersion(2.0)]
[Route("api/v{version:apiVersion}/orders")]
public class OrdersController : ControllerBase
{
[HttpGet, MapToApiVersion(1.0)]
public IActionResult GetV1() => Ok("v1");
[HttpGet, MapToApiVersion(2.0)]
public IActionResult GetV2() => Ok("v2");
}إيقاف إصدار
حدّد إصدارًا على أنه مهجور للإعلان عن موعد إيقافه، مع إبقائه قيد التشغيل.
[ApiVersion(1.0, Deprecated = true)]
[ApiVersion(2.0)]
[Route("api/v{version:apiVersion}/products")]
public class ProductsController : ControllerBase { }إدارة إصدارات Minimal APIs
تستخدم Minimal APIs مجموعة إصدارات تُنشأ باستخدام NewApiVersionSet، ثم تُرفق الإصدارات بكل نقطة نهاية.
var versionSet = app.NewApiVersionSet()
.HasApiVersion(new ApiVersion(1, 0))
.HasApiVersion(new ApiVersion(2, 0))
.Build();
app.MapGet("/api/v{version:apiVersion}/ping", () => "pong")
.WithApiVersionSet(versionSet)
.MapToApiVersion(2.0);تحقق سريع
تأكد من الغرض من AddApiExplorer.
مراجعة
لقد ضبطت Asp.Versioning:
- تعيّن
AddApiVersioningالإصدار الافتراضي وتفعّل إعداد التقارير. - تقرأ
ApiVersionReader.Combineالإصدارات من عنوان URL أو الترويسة أو سلسلة الاستعلام. - توجّه
[ApiVersion]و{version:apiVersion}الطلبات، بينما تستهدف[MapToApiVersion]الإجراءات. - تستخدم Minimal APIs مجموعة إصدارات.
التالي: إنشاء مستندات OpenAPI.
الأسئلة الشائعة
هل درس «تهيئة Asp.Versioning» مجاني؟
نعم — نص درس «تهيئة Asp.Versioning» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «تهيئة Asp.Versioning»؟
أعدّوا إدارة الإصدارات في ASP.NET Core تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تهيئة Asp.Versioning»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- استراتيجيات إصدار إصدارات API
- تهيئة Asp.Versioning
- إنشاء مستندات OpenAPI
- توثيق واجهات API ذات الإصدارات