Routing (مسیریابی) در Web API

جمعه 21 اسفند 1394

در این مقاله ، به بررسی روش های مختلفی که برای مسیریابی (Routing ) در WEB API وجود دارد ، می پردازیم. در هر کدام از روش ها با بیان یک مثال، شیوه کلی کار در آن روش را به شما نشان می دهیم.

Routing  (مسیریابی) در Web API

در این مقاله ، درباره ی انواع مختلف تکنیک های آدرس دهی در WEB API صحبت خواهیم کرد.

امروزه WEB API یک framework  محبوب و متداول در .NET  است زیرا کم حجم و سبک است و همچنین یک روش آسان و ساده برای ایجاد یک RESTful web service است.

در گذشته ما از web form application برای ایجاد وب سایت ها استفاده می کردیم ولی امروزه ، همه ی افراد، خواستار استفاده از rest service ها هستند.

ما می توانیم یک منطق کسب و کاری برای وب سایت، برنامه های Android ، برنامه های iPhone ، برنامه های Windows و غیره بسازیم و سپس بر اساس آن ، سرویس web API خودمان را فرخوانی کنیم.

تغییر قابلیت هایی که هم اکنون در Web API در دسترس است، بسیار ساده است، و مانند عمل  Routing  انجام می شود.

ما می توانیم عمل Routing  را به سه روش انجام بدهیم :

-در سطح عمومی (Global)

-در سطح Controller

-در سطح Action

سطح عمومی (Global)

URL ، WEB API را به صورت پیش فرض به شکل  “DomainName/api/ControllerName/Id” استفاده می کند و Id را به عنوان یک پارامتر اختیاری در نظر می گیرد. اگر ما بخواهیم آدرس دهی را در سطح عمومی برنامه تغییر بدهیم ، مجبوریم routing code در register Method در WebApiConfig.cs که در پوشه ی App_Start قرار دارد را تغییر بدهیم.

 

همان طور که در تصویر نشان داده شده است ،ما می توانیم مقدار routeTemplate را بر اساس نیازمان تغییر بدهیم.

اگر ما مسیریابی همراه با action name بخواهیم ، باید routeTemplate را مانند نمونه ی زیر تغییر بدهیم :

routeTemplate: "api/{controller}/{action}/{id}"

اگر از کد بالا استفاده کنیم ، URI ما به صورت زیر تغییر خواهد کرد :

DomainName/api/ControllerName/ActionName/Id

ما همچنین می توانیم کلمه ی کلیدی و ثابت “api” را تغییر بدهیم و هر نام دلخواهی را به آن بدهیم. ولی برای این که بتوانیم بین MVC controller  و  web API controller تفاوت ایجاد کنیم ، با کلمه ی کلیدی “api” ، نامگذاری را شروع کرده ایم.

ما می توانیم به صورت عمومی (global) ، چند مسیریابی (routing) را در صفحه ی WebApiConfig.cs  بر اساس نیازمان تعریف کنیم. البته اگر بخواهیم از این روش استفاده کنیم ، توجه به ترتیب مسیردهی ها مهم و با اهمیت است.

در سطح Controller

این روش فقط منحصر به یک Controller خاص است، ما می توانیم RoutePrefixAttribute را قبل از تعریف Controller استفاده کنیم. این روش در تکه کد زیر ، نشان داده شده است :

[RoutePrefix("v1/MyName/{action}")]

برای فراخوانی نام action در درون Controller ، باید از URI ای که قبلا تعریف کردیم استفاده کنیم. در تکه کد بالا، ما از کلمه ی کلیدی و ثابت  “v1” برای بیان نسخه (Version) استفاده کرده ایم و “MyName” نیز یک کلمه ی کاربردی و ثابت دیگر است که برای controller از آن استفاده کردیم. ما می توانیم نام ها را به صورت دلخواه و بر حسب علاقه ی خودمان انتخاب کنیم.

در سطح Action

ما همچنین می توانیم بر حسب نیازمان از مسیریابی در سطح Action استفاده کنیم. فرض کنید که ما یک notification service در درون همان controller داریم و نمی خواهیم که مسیریابی را در سطح global و یا controller انجام بدهیم. بنابراین می توانیم به روش زیر ، مسیریابی را انجام بدهیم :

[Route("~/Notification/Email")]

در این کد، ما از علامت (~) استفاده می کنیم برای این که RoutePrefix را در سطح اهمیت بالاتری نسبت به سطح controller قرار بدهیم. اگر از ویژگی RoutePrefix در سطح controller استفاده نکنیم ، می توانیم به سادگی علامت (~) را از تکه کد حذف کنیم.

به روش هایی که در بالا گفته شد، می توانیم روش ها و تکنیک های مختلف آدرس دهی در Web API را پیاده سازی کنیم.

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید