Nancy یک فریم ورک سبک برای ساخت سرویسهای مبتنی بر HTTP بر روی .Net و Mono و در واقع پیاده سازی Sinatra در Ruby برای .net است. با استفاده از این کتابخانه شما میتوانید به سادگی درخواستهای مختلف کاربران را از طریق وب پاسخ دهید. از ویژگیهای این کتابخانه امکان اجرای آن بدون نیاز به وجود وب سرور و به صورت Standalone میباشد.
بهتر است وارد عمل شویم و ببینیم این سیستم چگونه عمل میکند. برای شروع ما خود Asp .net را به عنوان میزبان در نظر میگیریم.
- یک پروژه خالی Asp .net ایجاد کنید. (Asp .net Empty Web Application)
- وارد خط فرمان Package Manager شوید و عبارت زیر را وارد کنید:
یک کلاس به پروژه اضافه کنید و نام آن را TestModule بگذارید.
در متن کلاس عبارات زیر را تایپ کنید:
حال کلید F5 را زده و برنامه را اجرا کنید.
حالا در مرورگر خودتان عبارت http://localhost:12345/Hello را تایپ کنید. توجه کنید که به جای 12345 باید شماره پورتی که وب سرور دات نت اجراست تایپ کنید.
همانطور که متوجه شدید ما در خطوط بالا تعیین کرده ایم که برای درخواستهای از نوع Get که مسیر ریشه سایت را درخواست میکنند عبارت Welcome to my site! ارسال شود. همچنین برای درخواست هایی که مسیر /Hello را درخواست میکنند عبارت Hello Nancy نمایان میشود.
نکته جالب برای درخواستهای /Bye است. در اینجا ما یک پارامتر به نام name تعریف کرده ایم و گفته ایم که درخواستهای Bye که در ادامه آنها عبارتی وجود دارد به صورت Good bye به همراه عبارت بازگردانده شوند.
همین عملیات برای درخواستهای Put و Head و سایر انواع درخواست وجود دارد.
برای اینکه درخواستها از مسیر خاصی فراخوانی شوند کافی است در هنگام اعلان سازنده کلاس ماژول، مسیر را تعیین کنید.
این درخواستها از مسیری شبیه این مسیر فراخوانی خواهند شد:
همچنین امکان بازگرداندن کدهای وضعیت به طور مستقیم وجود دارد.
و یا
همانطور که گفته شد امکان میزبانی پروژههای Nancy از داخل برنامههای دات نتی هم وجود دارد. در مقاله بعدی به این موضوع خواهیم پرداخت.
بهتر است وارد عمل شویم و ببینیم این سیستم چگونه عمل میکند. برای شروع ما خود Asp .net را به عنوان میزبان در نظر میگیریم.
- یک پروژه خالی Asp .net ایجاد کنید. (Asp .net Empty Web Application)
- وارد خط فرمان Package Manager شوید و عبارت زیر را وارد کنید:
Install-Package Nancy.Hosting.Aspnet
- پروژههای Nancy از تعدای ماژول تشکیل شده اند که میتوانیم برای هر ماژول آدرس وب جداگانه ای در نظر بگیریم. یک کلاس به پروژه اضافه کنید و نام آن را TestModule بگذارید.
در متن کلاس عبارات زیر را تایپ کنید:
public class TestModule : NancyModule { public TestModue() { Get["/"] = x => "Welcome to my site!"; Get["/Hello/"] = x=> "Hello Nancy!"; Get["/Bye/{name}"] = x=> "Good bye " + x.name; } }
حال کلید F5 را زده و برنامه را اجرا کنید.
حالا در مرورگر خودتان عبارت http://localhost:12345/Hello را تایپ کنید. توجه کنید که به جای 12345 باید شماره پورتی که وب سرور دات نت اجراست تایپ کنید.
همانطور که متوجه شدید ما در خطوط بالا تعیین کرده ایم که برای درخواستهای از نوع Get که مسیر ریشه سایت را درخواست میکنند عبارت Welcome to my site! ارسال شود. همچنین برای درخواست هایی که مسیر /Hello را درخواست میکنند عبارت Hello Nancy نمایان میشود.
نکته جالب برای درخواستهای /Bye است. در اینجا ما یک پارامتر به نام name تعریف کرده ایم و گفته ایم که درخواستهای Bye که در ادامه آنها عبارتی وجود دارد به صورت Good bye به همراه عبارت بازگردانده شوند.
همین عملیات برای درخواستهای Put و Head و سایر انواع درخواست وجود دارد.
برای اینکه درخواستها از مسیر خاصی فراخوانی شوند کافی است در هنگام اعلان سازنده کلاس ماژول، مسیر را تعیین کنید.
public class TestModule : NancyModule { public TestModule() : base("/test") { Get["/user"] = x=> "It is test for user"; } }
این درخواستها از مسیری شبیه این مسیر فراخوانی خواهند شد:
http://localhost:12345/test/user
همانطور که برای پردازش درخواست از عبارات کوتاه استفاده کردیم میتوانیم از توابع هم استفاده کنیم.Get["/hello/{username}"] = x=> { // some code // ... // ... return "Hello, " + username; };
همچنین امکان بازگرداندن کدهای وضعیت به طور مستقیم وجود دارد.
Get["/user"] = x=> return 200;
و یا
Get["/user] = x=> return HttpStatusCode.OK;
همانطور که گفته شد امکان میزبانی پروژههای Nancy از داخل برنامههای دات نتی هم وجود دارد. در مقاله بعدی به این موضوع خواهیم پرداخت.