سیستم مسیریابی یا Routing در WebAPI

شکل
شکل
شکل
شکل
شکل
شکل
شکل
شکل
سیستم مسیریابی یا Routing در WebAPI

سیستم مسیریابی یا Routing در WebAPI

سیستم مسیریابی یا Routing در WebAPI یکی از مهم‌ترین بخش‌های هر API است. این سیستم مشخص می‌کند هر درخواست HTTP به کدام کنترلر و کدام اکشن هدایت شود. اگر Routing درست تعریف نشود، حتی APIهای خوب هم به‌درستی کار نمی‌کنند. 🎯

در واقع، Routing مسئول پاسخ به این پرسش است: کدام متد از کدام کنترلر باید این درخواست را پردازش کند؟ در WebAPI، این تصمیم بر اساس آدرس URL، نوع درخواست HTTP و الگوی مسیر انجام می‌شود. به همین دلیل، درک درست از سیستم مسیریابی، برای طراحی APIهای تمیز، قابل توسعه و استاندارد ضروری است.

در این مقاله، ساختار سیستم مسیریابی یا Routing در WebAPI را به‌صورت به‌روز بررسی می‌کنیم. همچنین تفاوت آن با MVC، مزیت‌ها، کاربردها و نحوه تعریف Routeهای سفارشی را نیز توضیح می‌دهیم. 🚀

Routing در WebAPI چیست؟

Routing در WebAPI مکانیزمی است که درخواست ورودی را به مقصد درست می‌رساند. این مقصد معمولاً شامل موارد زیر است:

  • کنترلر
  • اکشن
  • پارامترهای مسیر
  • نوع متد HTTP

وقتی کاربر آدرسی مانند api/products/10 را فراخوانی می‌کند، سیستم مسیریابی بررسی می‌کند که این URL با کدام الگوی تعریف‌شده مطابقت دارد. سپس آن را به متد مناسب ارسال می‌کند.

اگر هیچ Route مناسبی پیدا نشود، سرور معمولاً خطای 404 Not Found برمی‌گرداند.

Route پیش‌فرض در WebAPI

در یک پروژه ساده WebAPI، معمولاً یک Route پیش‌فرض به شکل زیر ایجاد می‌شود:

csharp
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new
            {
                id = RouteParameter.Optional
            }
        );
    }
}

این Route سه بخش اصلی دارد:

  1. name: نام مسیر، مثل DefaultApi
  2. routeTemplate: الگوی مسیر، مثل api/{controller}/{id}
  3. defaults: مقادیر پیش‌فرض، مثل اختیاری بودن id

در این ساختار، controller و id به‌عنوان placeholder عمل می‌کنند. یعنی مقدار آن‌ها از URL خوانده می‌شود.

اجزای اصلی Route

برای درک بهتر سیستم مسیریابی یا Routing در WebAPI باید اجزای Route را بشناسید.

نام مسیر

نام مسیر برای شناسایی داخلی استفاده می‌شود. این نام باید واضح و یکتا باشد.

الگوی مسیر

الگوی مسیر تعیین می‌کند URL چه شکلی داشته باشد. برای مثال:

csharp
api/{controller}/{id}

در اینجا:

  • api بخش ثابت است
  • {controller} نام کنترلر را می‌گیرد
  • {id} پارامتر اختیاری است

مقادیر پیش‌فرض

اگر پارامتری ارسال نشود، سیستم از مقدار پیش‌فرض استفاده می‌کند. این موضوع برای طراحی URLهای منعطف بسیار مهم است.

Routing در WebAPI چگونه متد مناسب را پیدا می‌کند؟

در WebAPI فقط URL کافی نیست. نوع درخواست HTTP هم نقش مهمی دارد. برای مثال:

  • درخواست GET برای دریافت داده
  • درخواست POST برای ایجاد داده
  • درخواست PUT برای ویرایش
  • درخواست DELETE برای حذف

اگر متدی با نوع درخواست هماهنگ نباشد، با خطایی مانند زیر روبه‌رو می‌شوید:

text
The requested resource does not support http method 'POST'

پس سیستم مسیریابی، علاوه بر URL، متد HTTP را هم تحلیل می‌کند. این رفتار یکی از تفاوت‌های کلیدی WebAPI با MVC است.

تفاوت Routing در WebAPI و MVC

Routing در MVC و WebAPI شباهت‌هایی دارد، اما یک تفاوت مهم بین آن‌ها دیده می‌شود.

الگوی پیش‌فرض در MVC معمولاً به شکل زیر است:

csharp
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

اما در WebAPI معمولاً اکشن به‌صورت مستقیم در Route پیش‌فرض تعریف نمی‌شود. در عوض، نوع متد HTTP در انتخاب اکشن تأثیر اصلی دارد.

تفاوت اصلی

  • در MVC، اکشن معمولاً بخشی از URL است.
  • در WebAPI، اکشن اغلب با توجه به HTTP Method انتخاب می‌شود.

این تفاوت باعث می‌شود Routing در WebAPI برای طراحی سرویس‌های RESTful مناسب‌تر باشد. ✅

تعریف Routeهای سفارشی در WebAPI

در بسیاری از پروژه‌ها، Route پیش‌فرض کافی نیست. در این شرایط، می‌توان Routeهای سفارشی تعریف کرد.

نمونه کد:

csharp
config.Routes.MapHttpRoute(
    name: "GetAllEmploye",
    routeTemplate: "api/values/GetAll",
    defaults: new { controller = "Values", action = "GetAll", id = UrlParameter.Optional }
);

config.Routes.MapHttpRoute(
    name: "Getdetail",
    routeTemplate: "api/values/Getdetail/{id}",
    defaults: new { controller = "Values", action = "Getdetail", id = UrlParameter.Optional }
);

config.Routes.MapHttpRoute(
    name: "GetEmployeDetailByTest",
    routeTemplate: "api/values/GetEmployeDetailByTest/{id}",
    defaults: new { controller = "Values", action = "GetEmployeDetailByTest", id = UrlParameter.Optional }
);

با این روش می‌توان URLهای مشخص و خواناتری برای عملیات مختلف ساخت.

نمونه کنترلر برای Routing

در مثال زیر، یک کنترلر ساده داریم که چند متد GET را پیاده‌سازی می‌کند:

csharp
public class ValuesController : ApiController
{
    [HttpGet]
    [ActionName("GetAll")]
    public List<Employe> GetAllEmploye()
    {
        return new List<Employe>();
    }

    [ActionName("Getdetail")]
    public Employe GetEmployeDetail(int id)
    {
        return new Employe();
    }

    public Employe GetEmployeDetailByTest(int id)
    {
        return new Employe();
    }
}

نمونه آدرس‌های قابل فراخوانی:

  • api/values/GetAll
  • api/values/Getdetail/1
  • api/values/GetEmployeDetailByTest/2

همه این مثال‌ها از نوع GET هستند. اگر همین آدرس‌ها را با متد POST صدا بزنید، خطا دریافت می‌کنید.

سیستم مسیریابی یا Routing در WebAPI

Attribute Routing در WebAPI

امروزه استفاده از Attribute Routing بسیار رایج‌تر است. این روش خواناتر و قابل نگهداری‌تر است. در این حالت، Route مستقیماً روی متد یا کنترلر نوشته می‌شود. ✨

نمونه:

csharp
[RoutePrefix("api/values")]
public class ValuesController : ApiController
{
    [HttpGet]
    [Route("GetAll")]
    public IHttpActionResult GetAll()
    {
        return Ok();
    }

    [HttpGet]
    [Route("Getdetail/{id:int}")]
    public IHttpActionResult Getdetail(int id)
    {
        return Ok();
    }
}

چرا Attribute Routing بهتر است؟

  • خوانایی بیشتر
  • مدیریت آسان‌تر Routeها
  • انعطاف بالا
  • مناسب برای APIهای بزرگ

مزیت‌های سیستم مسیریابی در WebAPI

سیستم مسیریابی فقط برای هدایت درخواست نیست. این بخش روی توسعه‌پذیری، امنیت و تجربه کاربری هم اثر دارد.

مزیت‌ها

  • مدیریت دقیق درخواست‌ها: هر درخواست به متد درست هدایت می‌شود.
  • 🧩 ساختار منظم API: URLها استاندارد و قابل فهم می‌شوند.
  • 🚀 توسعه‌پذیری بهتر: افزودن مسیرهای جدید ساده‌تر می‌شود.
  • 🔍 دیباگ راحت‌تر: خطاهای مربوط به مسیر سریع‌تر شناسایی می‌شوند.
  • 🔐 کنترل بیشتر روی دسترسی‌ها: می‌توان مسیرها را دقیق‌تر محدود کرد.
  • 📈 هماهنگی با REST: طراحی API حرفه‌ای‌تر و استانداردتر می‌شود.

کاربردهای Routing در WebAPI

Routing در تمام APIهای عملیاتی نقش کلیدی دارد. بدون آن، مدیریت درست درخواست‌ها ممکن نیست.

کاربردها

  • 🌐 ایجاد APIهای RESTful
  • 📦 مدیریت داده‌های CRUD
  • 👥 هدایت درخواست کاربران به سرویس مناسب
  • 🛒 پیاده‌سازی API فروشگاه، حساب کاربری و سفارش
  • 🏢 ساخت سرویس‌های سازمانی و داخلی
  • 🔄 نسخه‌بندی API با مسیرهای مشخص

متدهای HTTP قابل پشتیبانی

در WebAPI می‌توان از ویژگی‌های مختلف برای مشخص کردن نوع درخواست استفاده کرد.

متدهای متداول

  • 🟢 HttpGet
  • 🟠 HttpPost
  • 🔵 HttpPut
  • 🟣 HttpPatch
  • 🔴 HttpDelete
  • HttpOptions
  • HttpHead

استفاده درست از این متدها باعث می‌شود ساختار API هم برای توسعه‌دهنده و هم برای کلاینت، واضح‌تر باشد.

نکات مهم برای طراحی Routing بهتر

برای داشتن یک ساختار حرفه‌ای در سیستم مسیریابی یا Routing در WebAPI این نکات را رعایت کنید:

  1. URLها را کوتاه و معنادار نگه دارید.
  2. از نام‌گذاری یکنواخت استفاده کنید.
  3. مسیرها را بیش از حد پیچیده نکنید.
  4. از Attribute Routing در پروژه‌های بزرگ استفاده کنید.
  5. پارامترها را تا حد ممکن واضح تعریف کنید.
  6. نوع متد HTTP را با عملیات هماهنگ کنید.

مراحل ثبت‌نام به صورت خلاصه

اگر قصد شروع یا استفاده از خدمات مرتبط را دارید، می‌توانید فرآیند ثبت‌نام را خیلی سریع انجام دهید. برای این کار کافی است مراحل زیر را طی کنید: 📝

  • 🔗 ورود به صفحه ثبت‌نام از طریق لینک p.api.ir
  • 👤 وارد کردن اطلاعات اولیه
  • 📩 تأیید شماره یا ایمیل
  • ✅ تکمیل ثبت‌نام و شروع استفاده از سرویس

این روند کوتاه است و در چند دقیقه انجام می‌شود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *