RESTful API چیست

RESTful API چیست؟ توضیح کامل به زبان ساده

اگر تا به حال سعی کرده باشید اپلیکیشن های خودتان را به Backend وصل کنید یا اینکه در دنیای API ها گشت و گذار و مطالعه کرده باشید، حتما اسم RESTful API به گوشتان خورده است. در این مقاله آموزشی از وبسایت برنامه چی، میخواهیم مفاهیم RESTful API را به زبان ساده توضیح بدهیم. برای یادگیری با ما همراه باشید.

RESTful API چیست

در این مقاله سرفصل های زیر وجود دارند:
RESTful API چیست؟
RESTful API چگونه کار میکند؟
محدودیت های طراحی و معماری RESTful API
تفاوت REST و RESTful API
مقایسه REST و SOAP
تاریخچه RESTful API ها
منابع بیشتر برای مطالعه


RESTful API چیست؟

REST API

RESTful API یک رابط نرم افزاری اپلیکیشن (Application Program Interface یا API) است که از پروتکل و ریکوئست های HTTP مانند GET، PUT، POST و DELETE برای گرفتن، قرار دادن، ارسال کردن و حذف کردن داده ها استفاده میکند. یک RESTful API که گاهی هم به نام وب سرویس RESTful هم شناخته میشود، بر اساس تکنولوژی نمایانگر حالت انتقال (Representational State Transfer که به اختصار REST نامیده میشود) ساخته شده است. یعنی یک شیوه معماری و راه حل برای برقراری ارتباط که معمولا در توسعه وب سرویس ها استفاده میشود.

معمولا تکنولوژی REST بیشتر برای پروتکل های ساده دسترسی آبجکت ها (Simple Object Access Protocol یا به اختصار SOAP) که قدرتمند هم هستند استفاده میشود. زیرا REST پهنای باند کمتری استفاده میکند و همین مسئله آنرا برای استفاده های اینترنتی مناسب میکند. یک API برای وبسایت، کدی است که به دو برنامه اجازه میدهد با یکدیگر ارتباط برقرار کنند. API راه مناسب را برای نوشتن یک سرویس درخواست برنامه، از یک سیستم عامل یا اپلیکیشن دیگر، به توسعه دهنده نشان میدهد.

تکنولوژی REST که توسط مرورگر ها استفاده میشود را میتوانیم به عنوان زبان اینترنت بشناسیم. با توجه به اینکه کاربرد Cloud ها در اینترنت زیاد شده است، API های زیادی برای استفاده توسط وب سرویس ها در حال خلق شدن هستند. REST یک راه حل منطقی برای ساختن API هایی است که به کاربران اجازه میدهند به خدمات ابری متصل شوند و با آنها تعامل داشته باشند. RESTful API ها توسط سازمان هایی مانند Amazon، Google، LinkedIn و Twitter استفاده میشوند.


RESTful API چگونه کار میکند؟

RESTful API یک تراکنش را میشکند تا یک دنباله از ماژول های کوچک بسازد. هرکدام از این ماژول ها به یکی از قسمت های تراکنش اصلی آدرس داده شده اند. این ماژول سازی انعطاف بسیار زیادی را برای توسعه دهندگان به ارمغان می آورد، اما همین تکنیک اگر بخواهد از ابتدا طراحی و پیاده سازی بشود، میتواند چالش بزرگی برای آنها باشد. در حال حاضر مدل هایی که توسط Amazon S3، Cloud Data Management Interface یا CDMI و OpenStack Swift ارائه میشوند، از محبوبترین ها هستند.

Restful api نحوه کار

RESTful API به طور واضح و شفاف از روش های HTTP که توسط پروتکل RFC 2616 تعریف شده اند بهره میبرد. یعنی از GET برای بازیابی اطلاعات، PUT برای تغییر حالت یا به روز رسانی یک منبع (که میتواند یک آبجکت، فایل یا بلاک باشد)، POST برای ساختن این منبع و DELETE برای حذف کردن منابع به کار میرود.

با استفاده از REST، کامپوننت هایی که با هم شبکه شده اند، یک منبع هستند که شما درخواست دسترسی به آنها را میدهید (یعنی یک جعبه سیاه مرموز که جزئیات مواردی که در آن پیاده سازی شده اند یا همان Implementation هایش مشخص نیستند). حالت پیشفرص این است که همه تماس ها یا Call هایی که انجام میدهید بدون حالت (Stateless) هستند. یعنی هیچ چیزی نمیتواند توسط سرویس RESTful، بین اجراهای مختلف، حفظ و نگهداری بشود.

نحوه کار

به دلیل Stateless بودن تماس هایی که انجام میشود، REST برای اپلیکیشن هایی که مبتنی بر Cloud هستند بسیار مناسب میباشد. کامپوننت هایی که Stateless هستند، میتوانند اگر مشکلی پیش بیاید، به راحتی دوباره اجرا بشوند یا میتوانند مقیاس های خودشان را با تغییرات بار روی سرور ها، تطبیق بدهند. دلیل این اتفاق این است که هر درخواستی میتواند توسط هر نمونه از کامپوننت ها مدیریت بشود و هیچ چیزی نیست که لازم باشد توسط تراکنش های بعدی به خاطر سپرده شود. این چیزی است که باعث میشود REST را برای وب سرویس ها ترجیح بدهند، اما مدل RESTful API نیز برای سرویس های ابری مناسب هستند. زیرا وصل شدن به یک سرویس از طریق API، دقیقا درباره کنترل کردن نحوه کدگذاری URL ها میباشد. رایانش ابری و میکروسرویس ها تقریبا مطمئن هستند که استفاده از RESTful APi را به یکی از قوانین آینده تبدیل کنند.


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

طراحی RESTful API توسط دکتر Rey Fielding و در پایان نامه دکتری سال ۲۰۰۰ ایشان تعریف شد. برای اینکه این طراحی از نظر RESTful API درست باشد، یک وب سرویس باید به ۶ محدودیت طراحی REST که در زیر لیست شده اند پایبند باشد:

  1. استفاده از رابط کاربری (UI) یکسان: همه منابع باید از طریق یک URL بصورت منحصر بفرد قابل شناسایی باشند، و این اتفاق فقط باید از طریق روش های اساسی و پایه ای پروتکل شبکه انجام بشوند. یعنی فقط از طریق دستوراتی مانند PUT، DELETE، و GET با HTTP باید بتوان یک منبع را دستکاری کرد.
  2. طراحی بر اساس Client-Server: در این طراحی باید یک مرز کاملا قابل تشخیص میان کلاینت و سرور وجود داشته باشد. رابط کاربری و جمع آوری درخواست ها، نگرانی هایی هستند که درباره سمت کلاینت (کاربر) وجود دارند. دسترسی به داده ها، مدیریت حجم کار و امنیت هم نگرانی هایی هستند که در سمت سرور قرار گرفته اند. این مسئله که هردوی کلاینت و سرور زیاد ربطی به هم ندارند، باعث میشود روند توسعه و بهبود هرکدام، بدون وابستگی به یکدیگر باشد.
  3. عملیات های Stateless: همه عملیات های میان کلاینت-سرور باید Stateless باشند، و هر مدیریت حالتی که نیاز است انجام بشود، باید در سمت کلاینت باشد، نه سرور.
  4. کش کردن منابع RESTful: همه منابع باید اجازه کش شدن را بدهند مگر اینکه صریحا گفته شده باشد که اجازه کش کردن وجود ندارد.
  5. سیستم لایه بندی شده: REST اجازه میدهد که یک معمار سیستم، بتواند ترکیبی از چند لایه سرور را پیاده سازی نماید.
  6. هرطور که میخواهید کدنویسی کنید: بسیاری از اوقات، سرور ها نسخه ایستا از منابع را در قالب XML یا JSON میفرستند. اما با اینحال، سرور ها میتوانند در صورت نیاز، کدهای قابل اجرا را نیز برای کلاینت ها ارسال کنند.

تفاوت REST و RESTful API

تفاوت rest و restful

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


مقایسه REST و SOAP

REST و SOAP روش های متفاوتی را برای راه اندازی یک وب سرویس ارائه میدهند. REST یک استایل معماری گونه دارد، در حالیکه SOAP یک پروتکل استاندارد ارتباطی برای پیام های مبادله ای که برپایه XML هستند، تعریف میکند. اپلیکیشن های REST میتوانند از SOAP استفاده کنند.

تفاوت rest و soap

وب سرویس هایی که برپایه RESTful API ساخته میشوند، Stateless هستند. یک کد که بر پایه REST پیاده سازی شده است به سادگی با SOAP مقایسه میشود، اما کاربران باید زمینه کاری و محتوایی که در این میان رد وبدل میشود را بفهمند. زیرا هنوز استاندارد ها و قوانینی برای تعامل با وب سرویس هایی که بر پایه REST هستند تعریف نشده است. سرویس REST برای دستگاه هایی که پروفایل محدود دارند، مانند موبایل، مفید است و به راحتی میتواند با وبسایت های موجود یکپارجه سازی بشود.

SOAP نیاز به کدهای کمتری نسبت به طراحی خدمات با استفاده از REST دارد. زبان توصیف سرویس های اینترنتی (The Web Services Description Language) تعدادی از قوانین رایج را برای تعریف پیام ها، اتصال، عملیات ها و محل سرویس شرح میدهد. وب سرویس های SOAP برای پردازش های غیر همزمان و Invocation ها مفید هستند.


تاریخچه RESTful API ها

قبل از REST، برنامه نویس ها از Simple Object Access Protocol یا SOAP استفاده میکردند تا با API ها یکپارچه بشوند. برای اینکه یک ارتباط با API برقرار شود، برنامه نویس ها خودشان یک سند XML به همراه تماس فرآیند از راه دور (Remote Procedure Call یا RPC) مینوشتند تا تماس را در بدنه اجرا کنند. سپس آنها مقصد نهایی را مشخص میکردند و SOAP خودشان را به این مقصد نهایی POST میکند.

در سال ۲۰۰۰، Roy Fielding و یک گروه برنامه نویسی تصمیم گرفتند که یک استاندارد تولید کنند تا هر سروری بتواند با هر سرور دیگری ارتباط برقرار کند. او REST را به همراه محدودیت های معماری که در پایان نامه PhD سال ۲۰۰۰ خود ارائه داد، تعریف کرد. این قوانین جهانی راه را برای برنامه نویسان که بتوانند نرم افزارها را یکپارچه کنند هموار کرده است.

SalesForce اولین کمپانی ای بود که یک API را به عنوان یک قسمت از پکیج Internet as a Service در سال ۲۰۰۰ به فروش رساند. هرچند تعداد کمی از برنامه نویسان بودند که توانستند از این API پیچیده که خروجی XML میداد استفاده کنند. EBAY یک REST API درست کرد که بازار این سرویس اینترنتی را به هر محلی که میتوانست به این API دسترسی داشته باشد، گسترش داد. این اتفاق توجه یکی دیگر از غول های دنیای فروش اینترنتی بود را جلب کرد و آمازون اولین API خودش را در سال ۲۰۰۲ روانه بازار کرد.

اینفوگرافیک restful api

سرویس اینترنتی Flickr اولین RESTful API خود را در آگوست سال ۲۰۰۴ راه اندازی کرد که بلاگر ها را قادر کرد تا بتوانند به راحتی عکس ها را در سایت ها و شبکه های اجتماعی خودشان استفاده کنند. FaceBook و Twitter هردو API های خودشان را در سال ۲۰۰۶ انتشار دادند، در حالیکه با توسعه دهندگانی دست و پنجه نرم میکردند که سایت را با استفاده از API های متفاوت تکه تکه کرده بودند. هنگامی که وب سرویس های آمازون (Amazon Web Services یا AWS) کمک کردند تا ابر یا Cloud در سال ۲۰۰۶ اجرا بشود، توسعه دهندگان میتوانستند به فضاهای اطلاعاتی در عرض چند دقیقه، و با استفاده از REST API های AWS دسترسی پیدا کنند و درخواست برای API های عمومی به شدت افزایش یافت.

از آن زمان، برنامه نویسان با آغوش باز RESTful API ها را پذیرفتند و از آنها برای اضافه کردن کاربرد های جدید به وبسایت ها و اپلیکیشن های خود استفاده میکردند. امروزه، REST API ها به عنوان ستون فقرات اینترنت شناخته میشوند.


منابع بیشتر برای مطالعه

در این قسمت میتوانید از منابعی که برای شما گردآوری کرده ایم، برای مطالعه بیشتر درباره RESTful API ها استفاده کنید:

2 دیدگاه دربارهٔ «RESTful API چیست؟ توضیح کامل به زبان ساده»

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اسکرول به بالا