آموزش ساخت یک Web API

ویژوال استودیو را باز کرده و یک پروژه ی جدید از نوع ASP.NET Core Web Application ایجاد کنید.

در صفحه ی بعد گزینه ی API را انتخاب کنید و یک Controller از جنس زیر بسازید.

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

در فایل lunchSettings.json متناسب با Controller و پروژه، تغییرات را اعمال کنید. (تغییراتی مانند شماره پورت ها، صفحه ی آغازین پروژه و …)

می توان با نرم افزارهایی نظیر Postman و Fiddler درخواست های HTTP را براحتی فرستاد. در شکل زیر، یک مثال از ارسال درخواست HTTP از نوع POST را مشاهده می کنید که با نرم افزار Postman ارسال شده است:

ارسال درخواست GET

درخواست GET به سرور، به منظور واکشی اطلاعات به کار می رود. نمونه کد متد Get در شکل زیر آورده شده است. این متد قرار است تمام اعضاء یک لیست را در پاسخ HTTP چاپ کند.

در تصویر زیر ارسال درخواست GET در برنامه Postman آورده شده است. دقت کنید که در URL بعد از کلمه ی کنترلر (default)  چیزی نوشته نشده است. این مسئله به این دلیل است که در شکل بالا متد Get هیچ آرگمانی نمی پذیرد. و همه ی اعضاء یک لیست را چاپ می کند.

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

ارسال درخواست POST

به کد زیر که نمونه ای از متد POST است دقت کنید. یک Attribute به نام FromBody وجود دارد و منظور از آن این است که مقدار پارامتر value از RequestBody ارسال می شود.

در مثال بالا تنها یک رشته (استرینگ) از طریق متد POST  به سرور فرستاده شد. اما بیشتر اوقات یک شی JSON به سرور فرستاده می شود. برای ارسال یک Json Object از طریق متد POST ابتدا باید کلاس مدل آن را بنویسید.

سپس متد POST را به شکل زیر بنویسید.

در Postman اینگونه درخواست را بفرستید.

ارسال درخواست DELETE

نمونه کدی از متد DELETE در زیر آورده شده است.(به دلیل شبه کد بودن، از نوشتن کد Delete امتناع ورزیده شده است. در عوض سعی در نشان دادن چگونگی مدیریت خطاهای HTTP شده است.)

ارسال درخواست PUT

شبیه درخواست های POST است با این تفاوت که اولاً مسئول Update اطلاعات است، دوماً علاوه بر اینکه اطلاعات را از Request Body می خواند، قسمتی از اطلاعات را نیز از URL دریافت می کند. به کد زیر دقت کنید. پارامتر id از طریق URL و پارامتر student از طریق Request Body پر می شود.

به نحوه ی ارسال درخواست در Postman دقت کنید.

ارسال درخواست با استفاده از JQuery Ajax

با استفاده از Ajax می توان درخواستی به Web API فرستاد. به عنوان مثال کد زیر در سمت کلاینت نوشته شده است. یک دکمه و یک لیست وجود دارد که با کلیک بر روی دکمه قرار است محتویات لیست از API دریافت و نشان داده شود.

اگر هنگام اجرای برنامه با خطای زیر مواجه شدید به این معناست که درخواست Ajax از دامنه ای غیر از دامنه ی WebAPI فرستاده شده است و به اصطلاح Origin Same نیست. برای رفع این مشکل باید در سمت پروژه API Web تنظیمات CORS را اعمال کنید.

برای این کار باید در API اجازه ی دسترسی به دامنه ی مورد نظر را بدهید. حتی می توان شماره ی پورت را نیز مشخص کرد. بدین منظور در فایل Startup.cs در متد Configue باید کد زیر را اضافه کرد.

می توان تنظیمات دیگری را نیز اعمال کرد. مثلا می توان آدرس چند دامین را وارد کرد.

حتی می توان تنظیماتی را اعمال کرد که به همه ی دامین ها دسترسی داده شود.

حتی می توان تعیین کرد که Web API به چه متدهایی اجازه ی ارسال بدهد و …  (GET, POST, PUT, DELETE)

CORS چیست؟

CORS مخفف Cross-origin resource sharing است. CORS مکانیزمی برای محدود کردن دسترسی به منابع یک وب  سایت یا Web API  است. طبق این مکانیزم دسترسی به منابع یک وبسایت و یا  API از دامنه ی دیگر وجود ندارد مگر اجازه ی دسترسی به آن دامنه ی خاص و یا پورت خاص داده شود.

چه تفاوت هایی باعث می شود که دو دامنه Same Origin نباشند؟

  • تفاوت در دامنه ها
  • تفاوت در آدرس سایت ها
  • تفاوت در شماره پورت ها
  • تفاوت در پروتکل ها

برای مطالعه بیشتر در زمینه CORS اینجا را کلیک کنید.

نوشته شده توسط mrbitmap علیرضا علی رمضانی

مقالات مرتبط

جدیدترین مقالات

فهرست