RESTful API چیست؟

RESTful API چیست؟

RESTful API چیست؟

RESTful API به زبان ساده چیست؟

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

یک مقدار تئوری

API یا Application Programming Interface که با رابط برنامه‌نویسی کاربردی ترجمه می‌شود یک مجموعه از قواعد و مکانیزم‌ها است که از طریق آن اپلیکیشن‌ها و یا کامپوننت‌های مختلف یک برنامه با همدیگر ارتباط برقرار می‌کنند. نام خود این مکانیزم بیانگر همه چیز است. منظور از رابط چیزی‌ست که دو شئ یا دو موجودیت مختلف را به همدیگر ربط می‌دهد. اما بیایید کمی با جزئیات بیشتر از این موضوع صحبت کنیم. API می‌تواند داده‌هایی که شما برای اپلیکیشن‌تان نیاز دارید را از طریق یک فرمت مناسب به خروجی بفرستد و یا آن‌ را برگشت دهد. فرمت JSON و XML از این دست فرمت‌ها هستند. در این مطلب ما قصد داریم روی JSON تمرکز بکنیم.

بیایید به یک مثال نگاه کنیم. احتمالا با گیت‌هاب آشنایی دارید. این سرویس APIهای منحصر به فرد خود را دارد که از طریق آن می‌توانید به یکسری اطلاعات از کاربران، مخازن‌شان و… دسترسی داشته باشید. شما می‌توانید این داده‌ها را دریافت کنید و سپس برای پروژه‌ خودتان آن را تغییر دهید. 

یک مثال از یک درخواست استاندارد برای API مانند زیر است:

این درخواست با کمک گرفتن از دستور curl اجرا می‌شود. همچنین ابزارهایی مانند Postman و REST Client وجود دارد که به شما این قابلیت را می‌دهد تا درخواست‌هایی را برای خروجی گرفتن از یک API بفرستید. 

در زیر می‌توانید خروجی دستور بالا را مشاهده بکنید:

حال بیایید با مفهوم REST آشنا شویم. این کلمه اختصاری برای representational state transfer است. تعریف REST را به صورت ساده می‌توان اینطور بیان کرد: نمایش اطلاعات برای کاربران از راهی که خوانایی بالایی داشته باشد. یکی از مفاهیم اصلی که باید در ارتباط با REST بدانید این است که REST یک پروتکل یا استاندارد نیست، این تنها یک راه‌حل و یا یک سبک معماری برای نوشتن APIها است.

دقیق‌تر شدن در REST

حال که فهمیدیم REST چیست، درک کردن RESTful API بسیار ساده‌تر است. همانطور که گفته شد REST یک روش معماری و چیدمان است و حال RESTful را می‌توان مفسری برای REST دانست. برای مثال اگر شما یک سرور دارید و قسمت Back-End یک REST API دارد، اگر یک کاربر از قسمت Client-Side یک درخواست برای استفاده از API بکند، کاربر شما Restful خواهد بود.

RESTful API چیست؟

این معماری چگونه کار می‌کند؟

بهترین رویکرد برای RESTful API شامل چهار عملیات است:

  • دریافت داده از یک فرمت مناسب
  • ایجاد داده جدید
  • تغییر و بروزرسانی داده
  • حذف کردن داده

REST به شدت مبتنی بر HTTP است. قرار نیست که ما در ارتباط با این پروتکل توضیحی ارائه دهیم اما به نظر ارزشمند است که اگر بتوانیم اشاره‌ای به روند‌های اجرا عملیات‌های بالا در HTTP بکنیم.

هر کدام از عملیات‌های بالا حاوی متد HTTP منحصر به فرد خودشان هستند:

  • GET – متدی برای دریافت اطلاعات
  • POST – متدی برای ایجاد داده
  • PUT – متدی برای بروزرسانی و ایجاد تغییرات در داده
  • DELETE – متدی برای حذف

به صورت کلی به تمام این عملیات‌ها CRUD نیز گفته می‌شود که ما در بانک‌های اطلاعاتی با آن سر و کار داریم. این چهار عملیات، داده‌های ما را مدیریت می‌کنند.

REST یک رابط برای مدیریت درخواست‌ها و ارتباط با بانک اطلاعاتی دارد که می‌شود در جدول زیر آن را به صورت کلی مشاهده کرد:

تمام درخواست‌ها، حاوی جواب‌های منحصر به فرد خودشان هستند. این جواب‌ها از طریق یکسری کد ارائه می‌شوند که تعداد آن‌ها بسیار زیاد است. اما می‌شود آن‌ها را در ۵ کلاس دسته بندی کرد. عدد اول هر کلاس نمایانگر پیغامی است که زیرکلاس‌های آن ارائه می‌دهند:

  • ۱xx – informational;
  • ۲xx – success;
  • ۳xx – redirection;
  • ۴xx – client error;
  • ۵xx – server error.

RESTful API چیست؟

نسخه بندی

شما همیشه باید برای REST APIهای خودتان نسخه بندی مناسبی طراحی بکنید. برای مثال اگر URL مربوط به API شما http://example.com/api است، باید آن را به صورت http://example.com/api/v1 تغییر بدهید.

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

دو روش برای تعیین کردن نسخه وجود دارد. اولین حالت به این صورت است که شما آن‌ها را در URL تعیین می‌کنید که در بالا توضیح داده شد. حالت دوم نسخه‌ها را در درخواست‌های header مدیریت می‌کنید. معمولا به حالت اول انتقادات شدیدی وارد می‌شود و می‌گویند که آرگومان‌های بسیاری وارد URL می‌شود. 

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

به صورت زیر از API استفاده نکنید:

Accept: application/vnd.redkavasyl-v2+json

شما می‌توانید بسیار ساده‌تر پارامترهای بیشتری را در سربرگ قرار دهید. بنابراین براساس تجربیات ما، بهترین رویکرد به صورت زیر خواهد بود:

Accept: application/vnd.redkavasyl+json; version=۲.۰

طراحی معماری RESTful

تمام منابع در REST به صورت موجودیت هستند. آن‌ها می‌توانند از همدیگر مستقل باشند. به مثال زیر دقت کنید:

  • GET /users – get all users
  • GET /users/123 – get a particular user with id = 123
  • GET /posts – get all posts

همچنین می‌توان به صورت ترکیبی از آن‌ها استفاده کرد. مثال:

  • GET /users/123/projects – get all the projects that a user with id = 123 has.

در مثال‌های بالا می‌تواند شاهد نقش کلیدی GET باشید که در تمام موارد قصد دریافت موجودیتی را دارد که شما درخواست می‌کنید. در این فرایند اگر خروجی شما کد ۲۰۰ باشد که به معنای OK است، فرایند درخواست شما با موفقیت انجام شده، اما اگر با کدهای ۴۰۴، ۴۰۰ و یا ۵xx مواجه شدید بدانید که یک جای کار اشتباهی صورت گرفته است. 

همانطور که گفته شد متد POST می‌تواند برای ایجاد یک موجودیت جدید استفاده شود:

  • POST /users

وقتی که یک موجودیت جدید ایجاد می‌کنید، پارامترهایی را در بدنه درخواست خود بسازید. برای مثال:

 
{
 
“first_name”: “Vasyl”,
 
“last_name”: “Redka
 
}

 این درخواست اگر دوباره تکرار شود، موجودیت جدیدی را با یک ID متفاوت درست می‌کند. بنابراین شما در حقیقت چیزی که دریافت می‌کنید شبیه به زیر است:

 
{
 
 
 
  “id”: “۱”,
 
 
 
  “first_name”: “Vasyl”,
 
 
 
  “last_name”: “Redka
 
 
 
}

کد ۲۰۱ به این معنی است که روند ایجاد شما با موفقیت اعمال شده است.

درخواست بعدی PUT است که گفتیم برای ویرایش و ایجاد تغییر در یک موجودیت استفاده می‌شود. زمانی که شما این درخواست را می‌فرستید، بدنه دستور باید حاوی یک داده با قابلیت بروزرسانی باشد. برای مثال:

  • PUT /users/123 – upgrade a user entity with id = 123.

اگر تغییر به صورتی درست انجام شود، کد ۲۰۰ برای شما برگردانده می‌شود.

آخرین درخواست DELETE است که گفتیم برای حذف یک موجودیت براساس آی‌دی آن استفاده می‌شود:

  • DELETE /users/123 – delete a user with id = 123

این دستور نیز اگر با کد ۲۰۰ برگردانده شود به معنی موفقیت آمیز بودن‌ش است.

RESTful API چیست؟

مستندسازی

برای مستندسازی یک فریمورک متن باز به نام Swagger.io وجود دارد که حقیقتا باید بگویم زندگی توسعه‌دهندگان را بسیار آسان‌تر می‌کند. شما می‌توانید با استفاده از این ابزار حتی کارهای مربوط به تستینگ را انجام دهید. 

می‌توانید در این ابزار تمام درخواست‌ها برای user را مشاهده کنید:

همچنین راه‌حلی بسیار منطقی به شما برای تعریف هر کدام از مدل‌های درخواستی را می‌دهد. شما می‌توانید فیلدها را با استفاده از داده‌ها مختلف پر کنید و آن‌ها را ارسال نمایید.

تفاوت REST و RESTful API

در حقیقت REST یک معماری است که امکان طراحی یک وب سرویس را به روش خاصی در اختیار توسعه دهنده قرار می دهد اما RESTful API یک سرویس است که این معماری را پیاده سازی کرده است. وب سرویس هایی که برپایه RESTful API ساخته میشوند، Stateless هستند به این معنی که به جای ذخیره‌سازی وضعیت کلاینت در سمت سرور، کلیهٔ داده‌ها در سمتِ خود کلاینت ذخیره می‌شوند و در هر درخواستی نیز برای سرور ارسال می‌شوند.

ویژگی‎های RESTful API:

• کلاینت-سرور (Client-Server): در این معماری کلاینت به‌عنوان front-end و سرور به‌عنوان back-end شناخته می‌شود. در این معماری حداقل وابستگی بین کلاینت و سرور وجود دارد، این اصل به توسعه دهنده ها اجازه می‌دهد تا بدون هیچ‌گونه وابستگی به یکدیگر به توسعه اپلیکیشن بپردازند.
• بدون وضعیت (Stateless): هیچ داده‎ای نباید در زمان پردازش انتقال درخواست روی سرور ذخیره شود و session باید در سمت کلاینت ذخیره شود. به عبارت دیگر، سرور هرگز نسبت به وضعیت درخواست‌های قبلی کلاینت اطلاعی ندارد. یکی از مزیت‌های کلیدی Stateless آن است که تغییرات صورت‌گرفته روی سرور هرگز کلاینت را با مشکل مواجه نمی‌کنند.
• قابل کش شدن (Cacheable): کلاینت باید قادر باشد که Response را به صورت Cache ذخیره کند.

• یکپارچگی رابط (Uniform Interface): برای دستیابی به Method های مختلف می‌باید از یک URL منحصر‌به‌فرد استفاده کرد به علاوه اینکه در Response می‌بایست با استفاده از Status code ها اطلاعات شفافی در اختیار کلاینت قرار دهیم.

در پایان

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

امیدواریم که این مطلب توانسته باشد که به شما در درک درست RESTful API کمک کرده باشد.

RESTful API چیست؟

 

طراحی وب سایت,طراحی وبسایت حرفه ای,طراحی وبسایت فروشگاهی,طراحی وبسایت با وردپرس,طراحی وبسایت با پایتون,طراحی وب سایت چیست,طراحی وب سایت رایگان,طراحی وبسایت بدون کدنویسی,طراحی وب سایت,طراحی وب سایت آموزش,طراحی وب سایت رایگان,طراحی وب سایت تورنتو,طراحی وب سایت با وردپرس,طراحی وب سایت شخصی,طراحی وب سایت چیست,طراحی وب سایت قیمت,طراحی وب سایت با پایتون,طراحی وب سایت فروشگاهی,طراحی وب سایت آموزشی,طراحی وب سایت آموزش مجازی,طراحی وب سایت آموزش رایگان,طراحی وب سایت آموزش,ساخت وب سایت آموزش,ساخت وب سایت آموزشی,آموزش طراحی وب سایت از مبتدی تا پیشرفته,آموزش طراحی وب سایت با وردپرس,آموزش طراحی وب سایت Pdf,طراحی وب سایت رایگان در گوگل,طراحی وب سایت رایگان فارسی,ساخت وب سایت رایگان,ساخت وب سایت رایگان با پسوند Com,ساخت وب سایت رایگان در گوگل,ساخت وب سایت رایگان خارجی,ساختن وب سایت رایگان در گوگل,ساخت وب سایت رایگان فارسی,ساخت وب سایت رایگان با وردپرس,طراحی وبسایت حرفه ای,طراحی وب سایت حرفه ای آموزش,طراحی وبسایت حرفه ای تهران,طراحی وب سایت حرفه ای پیشگام,طراحی وب سایت حرفه ایی,طراحی وب سایت حرفه ای تبریز,طراحی وب سایت حرفه ای در شیراز,طراحی وب سایت حرفه ای در مشهد,طراحی وب سایت حرفه ای در اصفهان,طراح وب سایت حرفه ای,هزینه طراحی وب سایت با وردپرس,قیمت طراحی وب سایت با وردپرس,مراحل ساخت وب سایت با وردپرس,فیلم آموزش طراحی وب سایت با وردپرس,آموزش کامل طراحی وب سایت با وردپرس,آموزش طراحی وب سایت حرفه ای با وردپرس,کتاب طراحی وب سایت با وردپرس,ساخت یک وب سایت با وردپرس,طراحی وب سایت شخصی رایگان,طراحی وب سایت شخصی ارزان,ساخت وب سایت شخصی,ساخت وب سایت شخصی رایگان,ساخت وب سایت شخصی در گوگل,نحوه طراحی وب سایت شخصی,هزینه طراحی وب سایت شخصی,قیمت طراحی وب سایت شخصی,ساخت وب سایت شخصی,مراحل طراحی وب سایت چیست,بهترین نرم افزار طراحی وب سایت چیست؟,کار طراحی وب سایت چیست,طراحی وب سایت وردپرس چیست,طراحی وب سایت اختصاصی چیست,طراحی قالب وب سایت چیست,منظور از طراحی وب سایت چیست,هدف از طراحی یک وب سایت چیست,طراحی وب سایت با قیمت مناسب,طراحی بنر وب سایت قیمت,قیمت طراحی وب سایت فروشگاهی,قیمت طراحی وب سایت حرفه ای,قیمت طراحی وب سایت وردپرس,قیمت طراحی وب سایت شرکتی,قیمت طراحی وب سایت استاتیک,قیمت طراحی وب سایت در تهران,طراحی وبسایت فروشگاهی,طراحی وب سایت فروشگاهی رایگان,آموزش طراحی وب سایت فروشگاهی,تعرفه طراحی وب سایت فروشگاهی,طراحی وب سایت فروشگاهی ارزان,طراحی وب سایت فروشگاهی در تبریز,طراحی وب سایت فروشگاهی در اصفهان,طراحی سایت,طراحی وب سایت,طراحی وبسایت,آموزش طراحی وب سایت,آموزش طراحی سایت,آموزش طراحی وبسایت,طراحی,طراحی وب,وبسایت,#طراحی وبسایت,طراحی وبسایت با php,طراحی وبسایت ورزش۳,طراحی وبسایت چند زبانه,اموزش طراحی وبسایت ۲۰۲۰,اموزش طراحی وب,اموزش طراحی وبسایت با html و css,اموزش طراحی وب سایت,طراحی وب سایت دوزبانه,طراحی وب سایت چندزبانه,طراحی وب سایت چند زبانه,طراحی کردن یک وب سایت,فیلم آموزش طراحی وب سایت,آموزش طراحی وب سایت ارزان,آموزش طراحی وب سایت حرفه ای,اموزش رایگان طراحی وب سایت,طراحی سایت شخصی,طراحی وب,طراحی وبسایت,طراحی وب سایت,فروشگاه اینترنتی,فروشگاه آنلاین,برنامه نویسی,برنامه نویسی نرم افزار,طراحی نرم افزار,اپلیکیشن,طراحی اپلیکیشن,برنامه نویسی اپلیکیشن,اندروید,آندروید,نرم افزار اندروید,اپلیکیشن اندروید,اپ,اپ اندروید,تحت وب,برنامه نویسی تحت وب,برنامه نویسی ویندوز,برنامه نویسی اندروید,برنامه نویسی موبایل,طراحی وبسایت فروشگاهی,طراحی فروشگاه اینترنتی,طراحی فروشگاه آنلاین,طراحی وبسایت خبری,طراحی وبسایت شرکتی,طراحی وبسایت شخصی,طراحی وبسایت آموزشی,آموزش آنلاین,آموزش,طراحی قالب وبسایت,قالب وردپرس,وردپرس,ووکامرس,

http://learning98.ir/ http://freshfile.ir/ http://techexpert.ir/ https://freshfile.sellfile.ir/ http://kishtehransar.ir/ http://golmezerji.ir/ http://MerajShohada.ir https://cafebazaar.ir/app/ir.techexpert.taeensath

دیدگاهتان را بنویسید

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