Web API چیست و چرا از آن استفاده می کنیم؟

API مخفف Application Programming Interface است. API در واقع نوعی رابط است که دارای مجموعه ای از توابع است. این مجموعه توابع به برنامه نویسان اجازه می دهد برخی از ویژگی های خاص یا داده های یک برنامه را بدست آورند.
Web API همانطور که از نام آن پیداست یک API است، که با استفاده از پروتکل HTTP می توان از طریق وب به آن دسترسی داشت. این چارچوبی است که به شما کمک می کند خدمات RESTFUL مبتنی بر HTTP را ایجاد و توسعه دهید. با استفاده از فن آوری های مختلف مانند java ،ASP.NET و غیره می توان وب API را توسعه داد و از Web API هم در وب سرور و هم در مرورگر وب استفاده می شود.

اساساً Web API یک مفهوم توسعه وب است. این سرویس به سمت سرویس گیرنده Web Application محدود می شود و همچنین شامل سرور وب یا جزئیات مرورگر وب نیست. اگر قرار است از برنامه ای روی سیستم توزیع شده و ارائه خدمات در دستگاه های مختلف مانند لپ تاپ، موبایل و غیره استفاده شود، از سرویس های API وب استفاده می شود. Web API فرم پیشرفته برنامه وب است.
ASP.NET مخفف Active Server Pages.NET است. این بیشتر برای ایجاد صفحات وب و فن آوری های وب استفاده می شود. این یک ابزار بسیار مهم برای توسعه دهندگان برای ایجاد صفحات وب پویا با استفاده از زبانهایی مانند C# ، Visual Basic. ASP.NET Web API در نظر گرفته شده است و چارچوبی است که به شما کمک می کند تا با دسترسی آسان به طیف گسترده ای از مشتری از جمله مرورگرها، موبایل ها، تبلت ها و غیره در انجام خدمات کمک کنید. با کمک ASP.NET می توانید از همان چارچوب الگوهای ایجاد صفحات وب و خدمات استفاده کنید.

در کجا می توان از Web API استفاده کرد؟

  1. Web API ها در اجرای سرویس های وب RESTFUL با استفاده از چارچوب NET بسیار مفید هستند.
  2. Web API به شما کمک می کند توسعه سرویس های HTTP با نهادهای مشتری مانند مرورگر، دستگاه ها یا رایانه های لوحی ارتباط برقرار کند.
  3. ASP.NET Web API با MVC برای هر نوع برنامه ای قابل استفاده است.
  4. یک API وب می تواند به شما در توسعه برنامه ASP.NET از طریق AJAX کمک کند.
  5. API وب ساخت برنامه های ASP.NET سازگار با هر مرورگر و تقریباً هر دستگاه را برای توسعه دهندگان آسان می کند.

چرا Web API را انتخاب کنیم؟

  1. سرویس های Web API نسبت به سایر سرویس ها ارجح هستند تا با برنامه محلی که از SOAP پشتیبانی نمی کند اما به خدمات وب نیاز دارد، استفاده شود.
  2. برای ایجاد سرویس های منبع گرا، بهترین گزینه خدمات API وب است. با استفاده از HTTP یا سرویس آرام، این خدمات ایجاد می شوند.
  3. اگر عملکرد خوب و توسعه سریع خدمات را می خواهید، خدمات API وب بسیار مفید هستند.
  4. برای توسعه وب سرویس های سبک وزن و قابل نگهداری، خدمات API وب برای توسعه آن سرویس بسیار مفید هستند. از هر الگوی متنی مانند JSON ،XML و غیره پشتیبانی می کند.
  5. دستگاههایی که پهنای باند محدودی دارند یا محدودیتی در پهنای باند دارند، بنابراین خدمات Web API بهترین گزینه برای آن دستگاهها است.

چگونه از Web API استفاده کنیم؟

Web API درخواست ها را از انواع مختلف دستگاه های کلاینت مانند موبایل، لپ تاپ و غیره دریافت می کند و سپس این درخواست ها را به سرور وب ارسال می کند تا این درخواست ها را پردازش کند و خروجی مورد نظر را به مشتری بازگرداند. Web API یک تعامل سیستم به سیستم است که در آن می توان به داده یا اطلاعات یک سیستم توسط سیستم دیگری دسترسی پیدا کرد، پس از اتمام اجرا داده های حاصل ذخیره شده یا می توانیم بگوییم خروجی به بیننده نشان داده شود.
API داده هایی را در اختیار برنامه نویسان خود قرار می دهد که در دسترس کاربران خارج قرار می گیرد. وقتی برنامه نویسان تصمیم می گیرند برخی از داده های خود را در دسترس عموم قرار دهند، نقاط پایانی را در معرض دید قرار می دهند، به این معنی که بخشی از زبانی را که برای ساخت برنامه خود استفاده کرده اند منتشر می کنند. سپس برنامه نویسان دیگر می توانند با ساختن URL یا استفاده از سرویس گیرنده های HTTP، داده ها را از برنامه استخراج کنند تا داده ها را از آن نقاط انتهایی درخواست کنند.

سمت سرور: یک API وب سمت سرور یک رابط برنامه نویسی است. از یک یا چند نقطه پایانی در معرض دید عمومی تشکیل شده است. این یک سیستم پیام پاسخ به درخواست را تعریف می کند. Mashup یک برنامه وب است که یک API سمت سرور است و چندین API سمت سرور را با هم ترکیب می کند. Webhook یک API سمت سرور است که ورودی را به عنوان یک شناسه منبع یکنواخت می گیرد.
Client Side :API های Client Side web اتصالات استاندارد JavaScript را هدف قرار می دهند. Google معماری سرویس گیرنده بومی خود را ایجاد کرده است که برای جایگزینی افزونه های بومی با برنامه های افزودنی و برنامه های کاربردی امن بومی طراحی شده است.

مراحل استفاده از Web API:

• بیشتر API ها به یک کلید API نیاز دارند. پس از یافتن یک API که می خواهید با آن بازی کنید، به اسناد مورد نیاز دسترسی نگاه کنید. بیشتر API ها از شما می خواهند یک تأیید هویت را انجام دهید، مانند ورود به سیستم با حساب Google خود. شما یک رشته منحصر به فرد از حروف و اعداد خواهید داشت که می توانید هنگام دسترسی به API از آنها استفاده کنید.
• ساده ترین راه برای شروع استفاده از API یافتن یک مشتری HTTP بصورت آنلاین مانند REST-Client، پستچی یا Paw است. این ابزارهای آماده به شما کمک می کنند تا با کلید API دریافتی، درخواست های خود را برای دسترسی به API های موجود ساختار دهید. شما هنوز هم باید برخی از نحوها را از طریق مستندات بدانید، اما دانش برنامه نویسی بسیار کمی لازم است.
• بهترین راه بعدی برای برداشتن داده ها از API ایجاد URL از اسناد موجود API است.

مثالهای محبوب API:

  • Google Maps API به توسعه دهندگان اجازه می دهد تا از Google Maps در صفحات وب با استفاده از رابط JavaScript یا Flash استفاده کنند.
  • YouTube API به توسعه دهندگان اجازه می دهد YouTube و عملکرد را در وب سایت ها یا برنامه ها ادغام کنند. API های YouTube شامل تجزیه و تحلیل API Data YouTube ، API، پخش مستقیم API YouTube Player و سایر موارد هستند.
  • API های فلیکر: توسط توسعه دهندگان برای دسترسی به داده های انجمن به اشتراک گذاری عکس Flick استفاده می شود.
  • Twitter API: Twitter دارای دو API است، REST API به توسعه دهندگان اجازه می دهد تا به داده های اصلی Twitter دسترسی پیدا کنند و API جستجو روش هایی را برای توسعه دهندگان فراهم می کند تا با داده های جستجوی توییتر و روندها ارتباط برقرار کنند.

محدودیت های معماری REST API

REST مخفف REpresentational State Transfer و API مخفف Application Program Interface است. REST یک سبک معماری نرم افزاری است که مجموعه قوانینی را که باید برای ایجاد خدمات وب استفاده شود تعریف می کند. وب سرویس هایی که از سبک معماری REST پیروی می کنند به عنوان سرویس های وب RESTful شناخته می شوند. این امکان را به سیستم ها می دهد تا با استفاده از مجموعه ای از قوانین یکنواخت و از پیش تعریف شده، به منابع وب دسترسی داشته و در آن دستکاری کنند. تعامل در سیستم های مبتنی بر REST از طریق پروتکل انتقال متن Hypertext (HTTP) انجام می شود.

یک سیستم آرام شامل موارد زیر است:
• مشتری که منابع را درخواست می کند.
• سروری که منابع دارد.

ایجاد REST API مطابق با استانداردهای صنعت مهم است که منجر به سهولت توسعه و افزایش پذیرش مشتری می شود.

محدودیت های معماری RESTful API

شش محدودیت معماری برای هر وب سرویس وجود دارد که در زیر لیست شده است:

  1. رابط یکنواخت
  2. عدم تابعیت
  3. قابل انعطاف پذیری
  4. سرور مشتری
  5. سیستم لایه ای
  6. کد تقاضا

تنها محدودیت اختیاری معماری REST کد درخواستی است. اگر سرویسی محدودیت دیگری را نقض کند، نمی توان به آن به عنوانRESTful اشاره کرد.

1- رابط یکنواخت

محدودیت کلیدی است که بین REST API و Non-REST API تفاوت قائل می شود. این نشان می دهد که بدون در نظر گرفتن دستگاه یا نوع برنامه (وب سایت، برنامه تلفن همراه)، باید یک راه یکنواخت برای تعامل با یک سرور مشخص وجود داشته باشد.

چهار اصل اصلی وجود دارد:
مبتنی بر منابع: منابع فردی در درخواست ها مشخص می شوند. به عنوان مثال: API / کاربران.
دستکاری منابع از طریق نمایندگی: مشتری نمایندگی از منبع دارد و شامل اطلاعات کافی برای تغییر یا حذف منبع در سرور است، به شرط اینکه مجوز این کار را داشته باشد. مثال: معمولاً کاربر هنگام درخواست برای لیستی از کاربران ، شناسه کاربری دریافت می کند و سپس از آن شناسه برای حذف یا تغییر آن کاربر خاص استفاده می کند.
پیامهای خود توصیفی: هر پیام شامل اطلاعات کافی برای توصیف نحوه پردازش پیام است تا سرور بتواند به راحتی درخواست را تجزیه و تحلیل کند.
Hypermedia as Engine of Application State (HATEOAS): لازم است برای هر پاسخ پیوندهایی را شامل شود تا مشتری بتواند منابع دیگر را به راحتی کشف کند.

2- عدم تابعیت

به این معنی است که حالت لازم برای رسیدگی به درخواست در داخل درخواست وجود دارد و سرور هیچ چیز مربوط به جلسه را ذخیره نمی کند. در REST، مشتری باید کلیه اطلاعات سرور را برای انجام درخواست اعم از بخشی از پام های جستجو، سرصفحه ها یا URI در بر گیرد. عدم تابعیت امکان دسترسی بیشتر را فراهم می کند زیرا سرور نیازی به حفظ، به روزرسانی یا برقراری ارتباط آن حالت جلسه ندارد. هنگامی که مشتری نیاز به ارسال داده های بیش از حد به سرور دارد، یک اشکال وجود دارد بنابراین دامنه بهینه سازی شبکه را کاهش می دهد و به پهنای باند بیشتری نیاز دارد.

3- قابل انعطاف پذیری

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

4- سرور مشتری

برنامه REST باید دارای معماری server-server باشد. مشتری شخصی است که متقاضی منابع است و دغدغه ذخیره سازی اطلاعات را ندارد، که برای هر سرور داخلی باقی می ماند و سرور شخصی است که منابع را در اختیار دارد و به رابط کاربری یا وضعیت کاربر توجهی ندارد. آنها می توانند به طور مستقل تکامل یابند. مشتری نیازی به دانستن چیزی در مورد منطق تجارت ندارد و سرور نیز نیازی به دانستن چیزی در مورد رابط کاربر ندارد.

5- سیستم لایه ای

معماری برنامه باید از چندین لایه تشکیل شود. هر لایه چیزی غیر از لایه فوری در مورد هیچ لایه دیگری نمی داند و می تواند سرورهای میانی زیادی بین سرویس گیرنده و سرور نهایی وجود داشته باشد. سرورهای میانی ممکن است با ایجاد تعادل در بار و ارائه حافظه نهان مشترک، در دسترس بودن سیستم را بهبود ببخشند.

6- کد تقاضا

این یک ویژگی اختیاری است. بر این اساس، سرورها همچنین می توانند کد اجرایی را به مشتری ارائه دهند. مثالهای کد در صورت درخواست ممکن است شامل اجزای کامپایل شده مانند برنامه های جاوا و اسکریپت های سمت مشتری مانند JavaScript باشد.

قوانین REST API

قوانین خاصی وجود دارد که باید هنگام ایجاد نقاط پایانی REST API در خاطر داشته باشید.
• REST به جای اقدام یا فعل مبتنی بر منبع یا اسم است. این بدان معنی است که یک URI از REST API همیشه باید با یک اسم ختم شود.
• از افعال HTTP برای شناسایی عمل استفاده می شود. برخی از افعال HTTP عبارتند از GET ، PUT ، POST ، DELETE ، UPDATE ، PATCH.
• یک برنامه وب باید در منابعی مانند کاربران سازماندهی شود و سپس از افعال HTTP مانند GET ، PUT ، POST ، DELETE برای اصلاح این منابع استفاده کند. به عنوان یک توسعه دهنده باید مشخص شود که آنچه باید انجام شود فقط با مشاهده نقطه پایانی و روش HTTP مورد استفاده قرار می گیرد.