تازههای NET 10.: ارتقاء توصیف APIهای REST با پشتیبانی از YAML در OpenAPI
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۳/۱۱ ۰۸:۰۴
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
Microsoft.AspNetCore.OpenApi در اکوسیستم .NET عمدتاً بر تولید مشخصات OpenAPI در فرمت JSON متمرکز بود. با این حال، YAML به دلیل ساختار دندانهگذاری شده و استفاده کمتر از کاراکترهای کنترلی (مانند آکولاد و ویرگول)، اغلب برای توصیف دادههای ساختاریافته، خواناتر از JSON در نظر گرفته میشود. این ویژگی به خصوص در فایلهای حجیم مشخصات API که جزئیات زیادی را در بر میگیرند، به توسعهدهندگان کمک میکند تا با سرعت و دقت بیشتری ساختار API را درک و بررسی کنند. با توجه به اینکه ابزارهای مهمی مانند Azure API Management به طور گسترده از YAML پشتیبانی میکنند، توانایی تولید مستقیم مشخصات YAML از درون برنامههای ASP.NET Core یک پیشرفت قابل توجه است.Microsoft.AspNetCore.OpenApi بهروزرسانی شده و اکنون قادر است مشخصات OpenAPI را علاوه بر JSON، در فرمت YAML نیز ارائه دهد. این قابلیت جدید به توسعهدهندگان ASP.NET Core، به ویژه آنهایی که از Minimal APIs استفاده میکنند، امکان میدهد تا به سادگی یک نقطه پایانی (Endpoint) جدید برای ارائه مشخصات API خود در قالب YAML تعریف کنند..csproj) برای استفاده از چارچوب هدف (Target Framework) مناسب و نسخه پیشنمایش (Preview) پکیج Microsoft.AspNetCore.OpenApi پیکربندی شود..csproj برای یک برنامه آزمایشی با .NET 10 و Minimal APIs:<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.0-preview.4.25258.110" />
</ItemGroup>
</Project>net10.0 تنظیم شده است که نشاندهنده استفاده از جدیدترین نسخه پلتفرم .NET (در زمان ارائه این ویژگی) میباشد. همچنین، PackageReference مربوط به Microsoft.AspNetCore.OpenApi به نسخه 10.0.0-preview.4.25258.110 (یا نسخههای سازگار بعدی) اشاره دارد که قابلیت تولید YAML را در خود جای داده است.Program.cs (در پروژههای Minimal API) یا در کلاس Startup.cs (در پروژههای سنتیتر ASP.NET Core MVC) انجام میشود.using System.Text.Json;
var builder = WebApplication.CreateBuilder(args);
// فعالسازی سرویسهای OpenAPI
builder.Services.AddOpenApi();
var app = builder.Build();
// فعالسازی Middleware های OpenAPI در محیط توسعه
if (app.Environment.IsDevelopment())
{
app.MapOpenApi(); // فعالسازی Endpoint پیشفرض JSON (معمولاً /openapi/v1.json)
app.MapOpenApi("/openapi/{documentName}.yaml"); // فعالسازی Endpoint برای فرمت YAML
}
// تعریف یک Endpoint ساده برای نمونه
app.MapGet("/saudacao", () =>
{
var currentDate = DateTime.Now;
string mensagem = (currentDate.DayOfWeek == DayOfWeek.Saturday ||
currentDate.DayOfWeek == DayOfWeek.Sunday) ? "Bom final de semana!" : "Seguimos na luta!";
var saudacao = new Saudacao(currentDate, mensagem);
return Results.Ok(saudacao);
});
app.Run();
// تعریف یک Record برای داده پاسخ (برای سادگی)
public record Saudacao(DateTime DataHora, string Mensagem);builder.Services.AddOpenApi(); (خط ۵): این متد، سرویسهای لازم برای تولید و ارائه مشخصات OpenAPI را در برنامه ثبت میکند. این اولین گام برای فعالسازی پشتیبانی از OpenAPI است.app.MapOpenApi(); (خط ۱۱، در صورت فعال بودن): این دستور، یک Endpoint پیشفرض برای ارائه مشخصات OpenAPI در فرمت JSON ایجاد میکند. مسیر این Endpoint معمولاً چیزی شبیه به /openapi/v1.json خواهد بود، که v1 نام سند (Document Name) پیشفرض است.app.MapOpenApi("/openapi/{documentName}.yaml"); (خط ۱۲): این دستور کلیدی، Endpoint جدیدی را برای ارائه مشخصات OpenAPI در فرمت YAML فعال میکند. با استفاده از این مسیر، که شامل پارامتر documentName (نام سند) است، میتوان به مشخصات API با پسوند .yaml دسترسی پیدا کرد. به عنوان مثال، اگر نام سند v1 باشد، مسیر دسترسی به فایل YAML، /openapi/v1.yaml خواهد بود./openapi/v1.yaml (با فرض نام سند v1) در مرورگر یا ابزارهای تست API، میتوانید مشخصات API خود را در فرمت YAML مشاهده کنید. این قابلیت به خصوص برای توسعهدهندگانی که از ابزارها یا پلتفرمهایی استفاده میکنند که YAML را ترجیح میدهند یا برای بهبود خوانایی مستندات API، بسیار مفید خواهد بود.Microsoft.AspNetCore.OpenApi در .NET 10، مزایای متعددی را برای توسعهدهندگان .NET به همراه دارد:builder.Services.AddSwaggerGen();app.UseYamlOpenApi();app.MapOpenApi("/openapi/{documentName}.yaml");app.EnableYamlSupport();app.MapOpenApi("/openapi/{documentName}.yaml"); میباشد.