سیستم مسیریابی یا 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 پیشفرض به شکل زیر ایجاد میشود:
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 سه بخش اصلی دارد:
- name: نام مسیر، مثل
DefaultApi - routeTemplate: الگوی مسیر، مثل
api/{controller}/{id} - defaults: مقادیر پیشفرض، مثل اختیاری بودن
id
در این ساختار، controller و id بهعنوان placeholder عمل میکنند. یعنی مقدار آنها از URL خوانده میشود.
اجزای اصلی Route
برای درک بهتر سیستم مسیریابی یا Routing در WebAPI باید اجزای Route را بشناسید.
نام مسیر
نام مسیر برای شناسایی داخلی استفاده میشود. این نام باید واضح و یکتا باشد.
الگوی مسیر
الگوی مسیر تعیین میکند URL چه شکلی داشته باشد. برای مثال:
api/{controller}/{id}
در اینجا:
apiبخش ثابت است{controller}نام کنترلر را میگیرد{id}پارامتر اختیاری است
مقادیر پیشفرض
اگر پارامتری ارسال نشود، سیستم از مقدار پیشفرض استفاده میکند. این موضوع برای طراحی URLهای منعطف بسیار مهم است.
Routing در WebAPI چگونه متد مناسب را پیدا میکند؟
در WebAPI فقط URL کافی نیست. نوع درخواست HTTP هم نقش مهمی دارد. برای مثال:
- درخواست GET برای دریافت داده
- درخواست POST برای ایجاد داده
- درخواست PUT برای ویرایش
- درخواست DELETE برای حذف
اگر متدی با نوع درخواست هماهنگ نباشد، با خطایی مانند زیر روبهرو میشوید:
The requested resource does not support http method 'POST'
پس سیستم مسیریابی، علاوه بر URL، متد HTTP را هم تحلیل میکند. این رفتار یکی از تفاوتهای کلیدی WebAPI با MVC است.
تفاوت Routing در WebAPI و MVC
Routing در MVC و WebAPI شباهتهایی دارد، اما یک تفاوت مهم بین آنها دیده میشود.
الگوی پیشفرض در MVC معمولاً به شکل زیر است:
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های سفارشی تعریف کرد.
نمونه کد:
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 را پیادهسازی میکند:
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/GetAllapi/values/Getdetail/1api/values/GetEmployeDetailByTest/2
همه این مثالها از نوع GET هستند. اگر همین آدرسها را با متد POST صدا بزنید، خطا دریافت میکنید.

Attribute Routing در WebAPI
امروزه استفاده از Attribute Routing بسیار رایجتر است. این روش خواناتر و قابل نگهداریتر است. در این حالت، Route مستقیماً روی متد یا کنترلر نوشته میشود. ✨
نمونه:
[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 این نکات را رعایت کنید:
- URLها را کوتاه و معنادار نگه دارید.
- از نامگذاری یکنواخت استفاده کنید.
- مسیرها را بیش از حد پیچیده نکنید.
- از Attribute Routing در پروژههای بزرگ استفاده کنید.
- پارامترها را تا حد ممکن واضح تعریف کنید.
- نوع متد HTTP را با عملیات هماهنگ کنید.
مراحل ثبتنام به صورت خلاصه
اگر قصد شروع یا استفاده از خدمات مرتبط را دارید، میتوانید فرآیند ثبتنام را خیلی سریع انجام دهید. برای این کار کافی است مراحل زیر را طی کنید: 📝
- 🔗 ورود به صفحه ثبتنام از طریق لینک p.api.ir
- 👤 وارد کردن اطلاعات اولیه
- 📩 تأیید شماره یا ایمیل
- ✅ تکمیل ثبتنام و شروع استفاده از سرویس
این روند کوتاه است و در چند دقیقه انجام میشود.
