واسطه در API .NET چیست؟

اگر با API در .NET کار کرده اید ، احتمالاً در مورد Middlewares شنیده اید. اما از این گذشته ، چه چیزی هستند و چرا آنها اینقدر مهم هستند؟
در این مقاله ، مفهوم میانی نرم افزار را در زمینه API .NET بررسی خواهیم کرد ، نحوه کار آنها را درک می کنیم و نمونه های عملی از نحوه استفاده از آنها را مشاهده خواهیم کرد.
میانه های میانه چیست؟
Middleware مؤلفه هایی هستند که خط لوله پردازش درخواست را در یک برنامه .NET تشکیل می دهند. آنها وظیفه برخورد با درخواست های HTTP (درخواست ها) و HTTP (پاسخ ها) را بر عهده دارند و به شما امکان می دهند قبل و بعد از درخواست به نقطه پایانی نهایی خود منطق را انجام دهید.
به یک وسط نرم افزار به عنوان یک “لایه” فکر کنید که لازم است قبل از رسیدن به مقصد شما (و همچنین در راه بازگشت ، وقتی جواب به مشتری ارسال می شود).
آنالوگ ها میان افزار انجام می دهند
یک رستوران را تصور کنید:
- شما یک درخواست (درخواست) قرار می دهید.
- قبل از ورود به آشپز (کنترل کننده API خود) ، سفارش از طریق پیشخدمت می رود ، که بررسی می کند که آیا آن کامل است (اعتبار سنجی معتبر).
- پس از آماده شدن ، ظرف (پاسخ) می تواند از طریق پیشخدمت دیگری که ادویه های اضافی (واسطه واسطه تبدیل) را اضافه می کند ، عبور کند.
هر میانی یک عملکرد خاص دارد و در صورت لزوم می تواند جریان را قطع کند.
واسطه های میانه روی .NET چگونه کار می کنند؟
No .NET ، خط لوله Middlewares با استفاده از روش استفاده ، اجرا یا نقشه در پرونده Program.cs پیکربندی شده است.
مثال اصلی میان افزار
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Middleware 1: Logging
app.Use(async (context, next) =>
{
Console.WriteLine($"Requisição recebida: {context.Request.Path}");
await next(); // Chama o próximo middleware
});
// Middleware 2: Autorização
app.Use(async (context, next) =>
{
if (!context.Request.Headers.ContainsKey("Authorization"))
{
context.Response.StatusCode = 401;
await context.Response.WriteAsync("Não autorizado");
return; // Interrompe o pipeline
}
await next();
});
// Rota principal
app.MapGet("https://dev.to/", () => "Hello World!");
app.Run();
در این مثال:
- اولین میانی نرم افزار مسیر درخواست را ثبت می کند.
- در صورت وجود هدر مجوز ، دومین بررسی میانی نرم افزار بررسی می کند. اگر وجود نداشته باشد ، 401 غیرمجاز را برمی گرداند.
اگر همه چیز صحیح باشد ، درخواست به نقطه پایانی اصلی (/) می رسد.
Middlewares comuns no .net
.NET در حال حاضر چندین میان افزار آماده برای استفاده است:
- UserOut () مسیریابی برنامه را تعریف می کند.
- useauthentication () تأیید اعتبار را امکان پذیر می کند.
- useAuthoization () مجوز را امکان پذیر می کند.
- usecors () سیاست های CORS را پیکربندی می کند.
- Usstaticphiles () اجازه می دهد تا بایگانی های استاتیک (HTML ، CSS ، JS) ارائه شود.
مثال با میان افزار یکپارچه
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/secure", () => "Rota segura!").RequireAuthorization();
app.Run();
سفارش مهم است!
No .net ، دنباله ای که در آن میانه در برنامه ثبت می شود. CS ترتیب اجرای را تعریف می کند. این بسیار مهم است زیرا ممکن است یک میان افزار به پردازش دیگری بستگی داشته باشد. به عنوان مثال:
app.UseHttpsRedirection(); // 1º: Redireciona para HTTPS
app.UseStaticFiles(); // 2º: Serve arquivos estáticos (CSS, JS)
app.UseRouting(); // 3º: Define as rotas
app.UseAuthentication(); // 4º: Autentica o usuário
app.UseAuthorization(); // 5º: Verifica as permissões
اگر UserOout و UseAuthentication را معکوس کنید ، تأیید اعتبار کار نخواهد کرد ، زیرا مسیریابی هنوز نقطه پایانی را که باید محافظت شود مشخص نکرده است.
چه موقع می توان یک وسط نرم افزار شخصی ایجاد کرد؟
می توانید میان افزار سفارشی ایجاد کنید:
- شما باید در همه درخواست ها چیزی را تأیید کنید (به عنوان مثال کلید API را بررسی کنید).
- می خواهید تمام درخواست ها/پاسخ ها را لگار دهید.
- شما باید پاسخ ها را تغییر دهید (به عنوان مثال اضافه کردن هدرهای سفارشی).
استفاده مشترک برای متمرکز کردن درمان استثنائات برای جلوگیری از تکرار کد است:
واسطه درمان خطا:
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
var error = context.Features.Get<IExceptionHandlerFeature>();
context.Response.StatusCode = 500;
await context.Response.WriteAsJsonAsync(new
{
Message = "Ocorreu um erro inesperado.",
Details = error?.Error.Message
});
});
});
تأثیر بر عملکرد
واسطه های میانه به خط لوله اضافه می کنند. برای جلوگیری از تنگناها:
- از میان افزار سبک وزن استفاده کنید (به عنوان مثال از جلوگیری از پردازش جلوگیری کنید).
- فقط موارد لازم را ضبط کنید (در تولید ، سیاهههای مربوطه را غیرفعال کنید).
- استفاده را در نظر بگیرید تا به صورت مشروط به استفاده از واسطه های میانه استفاده کنید:
app.UseWhen(context => context.Request.Path.StartsWith("/api"), appBuilder =>
{
appBuilder.UseMiddleware<ApiSpecificMiddleware>();
});
پایان
Middlewares قطعات اساسی در توسعه API .NET است و به شما امکان می دهد رفتارهای سفارشی را به خط لوله درخواست اضافه کنید. از آنها می توان برای ورود به سیستم ، احراز هویت ، درمان خطا و موارد دیگر استفاده کرد.
تسلط بر Middleware به ایجاد برنامه های مدولار ، ایمن تر و کارآمدتر کمک می کند.
منابع مفید
مستندات رسمی: Middlewares در ASP.NET CORE
بنابراین ، آیا در پروژه های خود از Middlewares استفاده کرده اید؟ در نظرات به ما بگویید! 🚀