REST API و مزایای استفاده از آن چیست؟
وقتی دنبال اطلاعات به روز بلیط هواپیمایی هستید و یا قصد دارید اطلاعات یک کاربر را در شبکه اینستاگرام به دست آورید درخواست شما توسط یک واسط به نام REST API سمت سرور ارسال شده و پاسخ این API بر اساس اطلاعاتی که شما ارسال کردید نمایش داده می شود. اگر میخواهید بهتر با مفهوم REST API و ابزارهای تست آن آشنا شوید این مقاله را از دست ندهید.
جست و جوهای شما در فضای وب به شکل یک درخواست به مرورگر ارسال شده و توسط پروتکل HTTP به شما نمایش داده می شوند. اما پشت ماجرا چیست؟ سرور چگونه اطلاعات را ارسال و در سیستم کلاینت در مرورگر به کاربران نمایش می دهد؟ API یک واسط است که امکان برقراری ارتباط بین دو برنامه کاربردی را فراهم کرده و به بازیابی اطلاعات کمک می کند. پس REST API چیست؟ یک معماری برای بهبود عملکرد API است و اگر API بر اساس این معماری باشد به آن REST API گفته می شود. در این مقاله به مفهوم REST API و شیوه عملکرد آن می پردازیم. به این منظور ابتدا می گوییم REST API چیست و سپس به مزایای استفاده از REST API و ویژگی های آن می پردازیم.
Api چیست؟
Api یک پروتکل برای یکپارچه کردن نرم افزارهای کاربردی است. این پروتکل امکان ارتباط بین درخواست کننده اطلاعات و ارائه دهنده آن را فراهم کرده و محتوای مورد نیاز هر دو را تولید می کند. برای مثال در وب سایت هواشناسی وقتی یک کلاینت با ارائه آدرس یا کد پستی اطلاعات دما را میخواهد، وب سرور مربوطه اطلاعات را به صورت حداکثر و حداقل درجه حرارت ارائه می دهد. رابط برنامه کاربردی که منجر به تولید این اطلاعات شده است را API می نامیم. برای درک بهتر مفهوم Api، آن را واسطه ای بین کلاینت و سرویس دهنده که حالت های مختلف انتقال دیتا را برعهده دارند در نظر بگیرید مانند پیشخدمت یک رستوران که خدمات ارائه می دهد.
API راهی مناسب برای به اشتراک گذاری منابع و اطلاعات با حفظ امنیت، کنترل و احراز هویت است که کاربردهای متفاوتی دارد برای مثال می توانید نحوه ساخت کد کپچا در وردپرس را ببینید تا با یکی از کاربردهای آن آشنا شوید.
rest api چیست؟
قبل از به وجود آمدن معماری (REpresentational State Transfer) Rest Api توسعه دهندگان از پروتکل SOAP برای بهبود عملکرد API استفاده می کردند. REST Api توسط دانشمندی به نام روی فیلینگ ارائه شد که یک سبک معماری برای سیستم های ابر رسانه توزیع شده (Distributed Hypermeida Systems) مانند یوتیوب است (این سبک معماری باعث ایجاد روشی می شود که وب باید طبق آن عمل کند). یک Api مطابق با سبک معماری Rest یک Rest Api نامیده می شود. در واقع یک رابط برنامه نویسی کاربردی مطابق با این سبک از معماری است و برای تعامل با وب سرویس های Rest به کار می رود. Rest به معنای انتقال حالت بازنمایی است.
زمانی که درخواست کلاینت از طریق REST API انجام می شود، سرور یک وضعیت را متناسب با درخواست کلاینت نمایش می دهد. این اطلاعات به وسیله پروتکل HTTP با فرمت JSON، XLT ارائه می شوند. همانطور که می دانید HTTP (Hypertext Transfer Protocol) یا پروتکل انتقال فرا متن برای انتقال و نمایش داده ها در فضای وب به کار می رود. برای اینکه دقیقا بدانید REST چیست باید مطابق با معیارهای زیر باشد:
• ارتباط سرور- کلاینت بدون تابعیت (Stateless): هر درخواست جداگانه انجام می شود و در هر ارتباط، اطلاعات کلاینت ذخیره نمی شوند.
• پیام هایی که به کلاینت بازگردانده می شوند اطلاعات کافی برای توصیف نحوه پردازش را دارند.
• یک سیستم لایه ای که هر نوع سیستمی را پوشش می دهد.
• استفاده از Rest Api آسان تر از پروتکل های دیگر مانند SOAP است که الزامات خاصی دارد و این پروتکل را کند و سنگین می کنند. در مقابل Rest یک رابط برنامه کاربردی سریع، سبک و مقیاس پذیرتر است.
• REST، استاندارد دیگری از API برای دسترسی به اطلاعات پایگاه داده و تغییر آن اطلاعات است.
• داده های قابل ذخیره سازی که ارتباط کاربر و سرور را ساده می کند.
• برای ارتباط میان دو وب سرویس یا اپلیکیشن استفاده می شود و مشخص می کند دستگاه های مختلف چگونه به هم دیگر متصل شوند. Api برای انتقال اطلاعات بین دو کلاینت یا وب سرور استفاده می شود.
• روش تبادل دیتا که این دو با یک دیگر ارتباط برقرار می کنند Json، XML و غیره است.
❗ همانطور که گفتیم در معماری REST API یک شی از اطلاعات درخواستی کلاینت ایجاد شده و مقادیر همان شی است که به کاربر ارسال می شوند. برای مثال کاربر درخواست خود مبنی بر دریافت اطلاعات بلیط های هواپیما امروز را ارسال میکند و پاسخ شی ای است که سرور حالت خاص از آن را ایجاد و ارسال می کند. که به این کار بازنمود (Representational) گفته می شود. روش ارسال درخواست Rest Api را در تصویر زیر ببینید.
روش ارسال درخواست Rest Api
ضرورت استفاده از Rest Api چیست؟
ممکن است بخواهید برای خرید و رزرو یک بلیط هواپیما آخرین اطلاعات به روز از بلیط های موجود را بدست آورید. شاید بپرسید این داده ها از کجا دریافت می شوند؟ داده ها از سرور دریافت می شوند. شما به عنوان کلاینت با استفاده از API، درخواست خود را به سرور ارسال می کنید و سرور پاسخ می دهد. داده ها از سمت سرور به صورت HTML برای کاربر ارسال می شوند اما اگر داده ها به صورت ساختیافته و از طریق XML، JSON به کاربر نمایش داده شوند بهتر و منظم تر است. استخراج اطلاعات پروسه پیچیده ای است که به تنهایی از طریق API امکان پذیر نیست و متد ها و توابع زیادی نیاز است. REST API با ایجاد یک مجموعه دیتا ساختیافته مقادیر آن شی را متناسب با درخواست کاربر برای کلاینت ارسال می کند.
فرض کنید که در یوتیوب به دنبال یک ویدیو آموزشی هستید. واژه کلیدی موردنظرتان را در بخش جست وجو تایپ کرده و شروع جست و جو را میزنید و سپس یک لیست از ویدیو درباره موضوع موردنظرتان می بینید. REST Api نیز به همین صورت عمل می کند: شما درخواستی دارید و یک فهرست از نتایج را دریافت می کنید. همانطور که گفتیم در Rest تمامی ارتباطات بدون تابعیت هستند و این سرویس نمی تواند بین اجراها اطلاعاتی را حفظ کند و برای برنامه های ابری مفید است. هیچ داده ای حفظ نمی شود و به همین دلیل در تراکنش بعدی نمی توان از آن استفاده کرد، این رابط برنامه کاربردی برای اتصال به برنامه های ابری مفید است زیرا دسترسی به یک سرویس از طریق Api تنها نیاز به تفسیر URL دارد.
Rest Api چگونه کار می کند؟
Api مجموعه قوانینی دارد و یکی از این قوانین این است که در ارتباط با یک URL باید یکسری اطلاعات بازگردد. URL یک درخواست ارزیابی شده و اطلاعاتی که برگردانده می شوند به عنوان پاسخ در نظر گرفته می شوند.
Rest Api یک تراکنش درخواستی را تجزیه می کند. هر جزء یک بخش اساسی از این تراکنش را مشخص می کند. این که به صورت ماژولار است باعث می شود Rest Api یک رویکرد انعطاف پذیر در نظر گرفته شود.
کلاینت میتواند با تعیین نوع درخواست HTTP (بر اساس پروتکل RFC 2616 هستند) که طیف گسترده زیر را شامل می شود به مسیر و منبع اطلاعاتی مدنظر درخواست خود را ارسال کند.
✔️ متد GET برای دریافت داده ها
✔️ متد PUT برای قرار دادن و تغییر وضعیت داده ها (مانند یک شی، داده یا بلاک متنی)
✔️ متد DELETE برای حذف آنها
✔️ متد POST برای ایجاد داده ها
✔️ متد Patch این متد برای آپدیت و به روزرسانی داده ها استفاده می شود.
تفاوت پروتکل SOAP با REST Api چیست؟
بعد از اینکه با مفهوم REST API آشنا شدید و دانستید REST چیست تفاوت آن را با پروتکل SOAP توضیح می دهیم.
پروتکل های ساده انتقال داده ای مانند SOAP (Simple Object Access Protocol) امنیت خوبی دارند و امکان ادغام داده ها را فراهم می کنند. به علاوه SOAP می تواند ارتباطات ناموفق را بازیابی کند اما کار با آن هم مشکلات خود را دارد. در صورتی که REST انعطاف پذیر تر و پیاده سازی آن راحت تر است.
• از آنجایی که SOAP یک پروتکل بر پایه XML است، به برقراری ارتباط و ارائه خدمات به صورت XML وابسته است و تنها با XML می تواند کار کند در صورتی که REST APi همانطور که گفتیم با JSON ،XML، متن و غیره هم کار می کند و عملیات سریع تری را فراهم می کند.
• REST یک معماری است و SOAP یک پروتکل است.
• پروتکل SOAP نسبت به REST به پهنای باند بیشتری نیاز دارد.
• تفاوت دیگر آنها در نحوه جفت شدن این پروتکل ها است. اتصال و جفت شدن SOAP قوی است در حالی که برای REST این جفت شدن بدون تابعیت است. یعنی ماژول ها مستقل هستند و تغییر در یکی عملکرد سایر ماژول ها را مختل نمی کند. با جایگزینی، تغییر و اضافه شدن ماژول ها در REST تغییری در سیستم به وجود نمی آید.
اصطلاحات REST API
اصطلاحات کلیدی که در REST APi کاربرد دارند را در ادامه آورده ایم.
✔️ کلاینت (client) یا مشتری
سخت افزار یا برنامه ای است که از API سرور استفاده می کند. برای مثال وقتی وارد سایت یوتیوب می شوید مرورگر شما به عنوان کلاینت شناخته می شود که با API یوتیوب ارتباط برقرار می کند و از داده هایی که ارسال کردید برای نمایش اطلاعات به شما استفاده می شود.
✔️ منبع (Resource)
منبع هر چیزی است که API درباره آن اطلاعاتی ارائه می دهد. مثلا API اینستاگرام می تواند یک کاربر، هشتگ، تصویر و ویدیو باشد. در REST Api هر منبع یک کنترلر دارد.
✔️ سرور (Server)
سرور همان سیستمی است که کلاینت درخواست خود را برای آن ارسال می کند و حاوی اطلاعاتی است که کلاینت میخواهد. سرور محتوا را با استفاده از واسط API برای کلاینت ارسال می کند. مثال یک برنامه است که ویدیوهای یوتیوب را با استفاده از REST API فراخوانی می کند.
ویژگی های REST API
این معماری که کارآمدترین روش برای یکپارچه سازی داده ها و منابع (برنامه های کاربردی) است، ویژگی های زیر را دارد:
• مقیاس پذیری: در تراکنش REST API اطلاعات ذخیره نمی شوند و هر تراکنش بی تابعیت است بنابراین نیازی به سرورهای قدرتمند برای ذخیره اطلاعات کلاینت ندارد. همین مساله این معماری را برای هر درخواست مقیاس پذیر کرده است.
نکته: معماری Rest برای سایت های حال حاضر کار می کند بدون اینکه نیازی به بازسازی سایت و زیر ساخت آن باشد. به همین دلیل این روش پر کاربردترین روش ادغام سرویس ها است.
• انعطاف پذیری و قابلیت حمل: حتی اگر کلاینت و سرور روی سرورهای متفاوت اجرا (میزبانی) شوند کاربران به راحتی می توانند ارتباط برقرار کرده و درخواست خود را ارسال کنند.
• مستقل بودن: به دلیل جدا بودن کلاینت و سرور به راحتی می توان بخش های مختلف یک درخواست را به طور مستقل انجام داد. هر وظیفه به شکل مستقل انجام می شود و با انواع پلتفرم های عملیاتی سازگار است.
اصول طراحی REST Api چیست؟
در این بخش به 6 اصل طراحی Rest Api می پردازیم.
✔️ کلاینت سرور
این اصل طراحی به این موضوع اشاره دارد که کلاینت و سرور باید از همدیگر جدا باشند و به طور مستقل امکان توسعه آنها باشد. امکان بهبود مدیریت در بسیاری از پلت فرم ها وجود دارد و با ساده سازی اجزائ سرور امکان مقیاس پذیری آن وجود دارد.
✔️ بی تابعیت بودن
Api های Rest بی تابعیت هستند و هر ارتباط را می توان مستقل از ارتباط دیگری برقرار کرد. هر ارتباط شامل داده های ضروری مربوط به خود برای تکمیل آن درخواست است. به زبان ساده تر هر درخواستی که از کلاینت به سرور ارسال می شود باید حاوی تمام اطلاعات ضروری برای درک درخواست باشد. در واقع سرور به یاد نمی آورد که کدام کاربر قبلا با درخواست API درخواست دریافت چه منبعی را داشته است.
✔️ قابل ذخیره سازی بودن
سربار درخواست در API بالا است بنابراین باید بتواند داده هایی که قابل ذخیره سازی هستند را ذخیره کند. داده های درون یک پاسخ API باید با عنوان قابل ذخیره سازی یا غیر قابل ذخیره سازی دسته بندی شوند. اگر یک پاسخ قابل ذخیره سازی باشد حافظه نهان کلاینت این مجوز را دارد که داده های پاسخ دریافتی را برای درخواست های آینده خود بازیابی کند. همین مساله مانع از ارسال درخواست های مداوم برای داده های یکسان می شود.
✔️ سیستم لایه بندی
معماری Rest APi یه صورت لایه لایه است. این لایه ها با یکدیگر کار می کنند و سلسله مراتبی را ایجاد می کنند که ایجاد یک برنامه مقیاس پذیر و منعطف را امکان پذیر می کند. این سیستم لایه ای باعث امنیت بالاتر این معماری می شود زیرا عناصر هر لایه نمی توانند خارج از لایه کار کنند. این سیستم باعث تعادل بار نیز می شود. با محدود کردن عملکرد عناصر باعث پایداری بیشتر سیستم می شود زیرا هر عنصر نمی تواند خارج از لایه خود را ببیند.
✔️ کد در صورت تقاضا (Code On Demand)
کلاینت می تواند به صورت اختیاری از سرور درخواست کد کرده و کد دریافتی را اجرا و استفاده کند. یک سرور به طور معمول فایل JSON یا XML را باز می گرداند اما اگر کلاینت بخواهد کدهای قابل اجرا را ارسال می کند.
تفاوت بین RESTFUL و REST چیست؟
RESTFUL به وب سرورهایی اشاره می کند که سبک معماری REST را پیاده کرده اند و به آن معناست که آنها قابلیت REST را داشته و یا با این سبک معماری تطبیق دارند. این وبسرویس ها از سبک معماری REST استفاده می کنند.
درخواست API چگونه انجام می شود؟
بعد از اینکه با مفهوم REST API آشنا شدید باید بدانید که عملکرد یک REST API چگونه است.
✔️ درخواست API
یک درخواست REST API با کمک ابزارهای خط فرمانی مانند CURL و node.js Express اجرا می شود. این درخواست حاوی یک URL است. که به جای آن شما باید آدرس دامنه سرور مورد نظر را بگذارید.
✔️ پاسخ سرور به درخواست API
پاسخی که سرور ارسال و کلاینت دریافت می کند براساس دو مورد انجام می شود. کنترلر منبع و نوع متد. کنترلر منبع همان url آن است. برای مثال اگر شما می خواهید اطلاعات یک کاربر اینستاگرام را پیدا کنید و نام کاربر را در ادامه درخواست خود بزنید نام کاربر به عنوان کنترلر منبع در نظر گرفته می شود. عملیاتی که کلاینت می خواهد روی منبع انجام شود را باید توسط متدهایی که اعلام شد مانند GET، POST، PUT و غیره مشخص کند. در این مثال متد GET به سرور می گوید شما قصد دریافت اطلاعات آن کاربر را دارید.
نمونه ای از درخواست API
ابزارهای زیادی برای ارسال درخواست HTTP به Api از طریق مرورگر وجود دارد. یکی از ابزارها برای ارسال درخواست، Curl است که یک ابزار خط فرمان بوده و لینک درخواستی شامل یک url مانند زیر است که می تواند حاوی درخواست های موردنظر باشد. از سایر ابزارهایی که برای ایجاد درخواست Api به کار می روند می توان به REST Client ،Postman اشاره کرد.
درخواست Api
در تصویر زیر یک درخواست Api را مشاهده می کنید.
پاسخ سرور
پاسخ سرور در Rest APi چگونه است؟
وقتی کلاینت درخواست خود را ارسال می کند آنچه سمت سرور انجام می شود به دو اطلاعات وابسته است که کلاینت باید آن را فراهم کند.
- شناسه یا identifier: شناسه در همان url آورده می شود که باید توسط کلاینت فراهم شود و به عنوان نقطه انتهایی یا Endpoint شناخته می شود.
- در سمت دیگر عملیاتی است که سرور باید انجام دهد که می تواند یکی از متدهای PUT ،POST ،GET و DELETE باشد.
یک مثال برای درک بهتر درخواست Api به این صورت است که اگر بخواهید اطلاعات یک کاربر را در توییتر با استفاده از Rest Api واکشی کنید باید یک URL (شامل شناسه کاربر برای مثال www.twitter.com/user-ID که به جای user-id می توانید نام کاربر را بگذارید) داشته باشید که کاربر و متد Get را که برای استخراج و واکشی کاربر استفاده می شود را شناسایی کند.
معرفی ابزارهای ایجاد و تست API
نرم افزار Postman یک پلت فرم و ابزار برای کار با Rest Api و تست درخواست ها است. این ابزار برای ایجاد و استفاده از Api است و به شما کمک می کند Api های مناسبی ایجاد و متدهای مختلف را اجرا کرده و آنها را تست کنید. با این نرم افزار درخواست های Api ایجاد کرده و بر اساس پاسخ ارسالی Rest Api های خود، را اشکال زدایی کنید. درخواست ها را ارسال کنید، از پاسخ ها inspect بگیرید و Rest Api ها را دیباگ کنید. محیط این نرم افزار به شکل زیر است. در بخش مشخص شده نام متد را انتخاب کنید و بعد از تایپ درخواست دکمه Send را بزنید.
محصولات آماده زیادی هستند که از ویژگی API برای دریافت اطلاعات استفاده می کنند. با اسکریپت زیر به راحتی به API اینستاگرام متصل شوید.
در این مقاله با مفهوم REST API و نحوه عملکرد آن آشنا شدید. بعد از اینکه گفتیم REST API چیست، ویژگی های آن و نحوه ارسال درخواست و پاسخ را به شما توضیح دادیم. امیدوارم این مقاله به درک بهتر شما از REST API کمک کند.