مقدمه
RESTful API چیست؟
رابطی است که دو سیستم کامپیوتری از آن برای تبادل امن اطلاعات از طریق اینترنت استفاده میکنند. اکثر برنامههای کاربردی تجاری برای انجام وظایف مختلف باید با سایر برنامههای داخلی و شخص ثالث ارتباط برقرار کنند. به عنوان مثال، برای تولید فیشهای حقوق ماهانه، سیستم حسابهای داخلی شما باید دادهها را با سیستم بانکی مشتری به اشتراک بگذارد تا صورت حساب خودکار انجام شود و با یک برنامه صفحه زمانی داخلی ارتباط برقرار کند. APIهای RESTful از این تبادل اطلاعات پشتیبانی میکنند زیرا از استانداردهای ارتباطی نرمافزاری امن، قابل اعتماد و کارآمد پیروی میکنند. قبل از عمیقتر شدن در بحث REST مروری بر چیستی رابط برنامهنویسی کاربردی داشته باشیم.
API چیست؟
-
مشتریان: کاربرانی هستند که میخواهند از طریق وب به اطلاعات دسترسی داشته باشند. مشتری میتواند یک شخص یا یک سیستم نرمافزاری باشد که از رابط برنامهنویسی استفاده میکند. به عنوان مثال، توسعهدهندگان میتوانند برنامههایی بنویسند که به دادههای آب و هوا از یک سیستم آب و هوا دسترسی دارند. یا زمانی که مستقیماً از وب سایت هواشناسی بازدید میکنید، می توانید به همان دادهها از مرورگر خود دسترسی پیدا کنید.
-
منابع: اطلاعاتی هستند که برنامههای کاربردی مختلف در اختیار مشتریان خود قرار میدهند. منابع میتوانند تصاویر، فیلمها، متون، اعداد یا هر نوع داده باشند. ماشینی که منبع را به مشتری (سرویسگیرنده) میدهد سرویسدهنده نیز نامیده میشود. سازمانها از رابطهای برنامهنویسی برای به اشتراک گذاشتن منابع و ارائه خدمات وب با حفظ امنیت، کنترل و احراز هویت استفاده میکنند. علاوه بر این، رابطها، سطح دسترسی مشتریان به منابع داخلی خاص را تعیین میکنند.
REST چیست؟
سبک معماری REST
سبک معماری REST یک سبک معماری است که برای طراحی سیستمهای توزیعشده و به خصوص سرویسهای وب استفاده میشود. این سبک معماری بر اصول و محدودیتهایی استوار است که به منظور ایجاد سیستمهای مقیاسپذیر، کارآمد و قابل توسعه طراحی شدهاند. در ادامه به توضیح انواع سبک معماری REST میپردازیم:
1-1 سرویسگیرنده-سرویسدهنده (Client-Server):
در این سبک، وظایف سرویسگیرنده و سرویسدهنده به وضوح از یکدیگر جدا شدهاند. سرویسگیرنده وظیفه دارد تا درخواستها را ارسال کند و رابط کاربری را مدیریت کند (سرویسگیرنده در بخش 6 توضیح داده شده است)، در حالی که سرویسدهنده مسئول مدیریت دادهها، پردازش و پاسخ به درخواستهای سرویسگیرنده است. این تفکیک به هر کدام از اجزا اجازه میدهد تا به طور مستقل توسعه و بهبود یابند.
1-2 بدون حالت (Stateless):
در این سبک، هر درخواست از سمت سرویسگیرنده به سرویسدهنده (client to server) باید شامل تمام اطلاعات لازم برای پردازش آن درخواست باشد. سرویسدهنده هیچ گونه اطلاعاتی را درباره وضعیت سرویسگیرنده نگهداری نمیکند. این امر باعث میشود که هر درخواست مستقل از درخواستهای قبلی باشد و مقیاسپذیری سیستم بهبود یابد.
1-3 کش کردن (Caching):
در این سبک، پاسخهای سرویسدهنده میتوانند به صورت موقت در سطح سرویسگیرنده یا در سطوح میانی کش شوند. این کار باعث کاهش بار سرویسدهنده و افزایش سرعت پاسخدهی به درخواستهای مشابه میشود. اطلاعات کش شده باید قابل اعتبارسنجی و مدیریت باشند.
1-4 رابط یکنواخت (Uniform Interface):
این سبک تاکید بر استفاده از یک رابط یکنواخت برای تعامل بین سرویسگیرنده و سرویسدهنده دارد. این رابط شامل چهار محدودیت اصلی است:
شناسایی منابع (Identification of Resources): هر منبع در سیستم باید از طریق یک URL یکتا قابل شناسایی باشد.
دستکاری منابع از طریق بازنماییها (Manipulation of Resources through Representations): منابع میتوانند از طریق بازنماییهایی مانند JSON یا XML دستکاری شوند.
پیامهای خود توضیحدهنده (Self-descriptive Messages): هر پیام باید تمام اطلاعات لازم برای درک و پردازش آن را داشته باشد.
پیوندهای فوق رسانه به عنوان موتور وضعیت برنامه (Hypermedia as the Engine of Application State - HATEOAS): سرویسگیرنده باید بتواند از طریق پیوندهای موجود در بازنماییها، به منابع و عملیات مرتبط دسترسی پیدا کند.
1-5 سیستم لایهای (Layered System):
در این سبک، سیستم به چندین لایه مجزا تقسیم میشود که هر کدام وظایف خاص خود را دارند. یک سرویسگیرنده ممکن است با یک سرویسدهنده واسطهای تعامل داشته باشد که خود با سرویسدهنده اصلی ارتباط دارد. این معماری بهبود امنیت و مقیاسپذیری را فراهم میکند و به سرویسدهندهها اجازه میدهد تا به صورت شفاف عمل کنند.
1-6 کد مبتنی بر تقاضا (Code on Demand):
عناصر مهم REST کداماند؟
- روش HTTP: این روش مشخص میکند که چه اتفاقی باید برای منبع مشخص شده بیفتد. چهار روش اصلی HTTP به عنوان توابع شناخته میشوند: POST برای ایجاد یک منبع جدید، GET برای بازیابی یک منبع موجود، PUT برای بهروزرسانی یا تغییر یک منبع موجود، و DELETE برای حذف یک منبع هستند. به این افعال HTTP -که با روشها یا اقدامات ایجاد (Create)، بازیابی (Recovery)، بهروزرسانی (Update) و حذف (Delete) مطابقت دارند- CRUD گفته میشود.
- نقطه پایانی (End Point): نشان میدهد که منبع در کجا قرار دارد و معمولاً شامل یک شناسه منبع یکنواخت (Uniform Resource Identifier) میشود. اگر منبع از طریق اینترنت قابل دسترسی باشد، URI می تواند آدرس اینترنتی باشد که آدرس وب را برای منبع ارائه میدهد.
- سرتیتر (Header): دارای جزئیات مورد نیاز برای اجرای تماس و رسیدگی به پاسخ است. سرتیتر درخواست ممکن است شامل دادههای احراز هویت، یک کلید رمزگذاری، جزئیات بیشتر در مورد مکان سرویسدهنده یا دسترسی به اطلاعات و جزئیات مربوط به قالب داده مورد نظر مورد نیاز برای پاسخ باشد.
- بدنه: حاوی اطلاعات مربوطه به/از سرویسدهنده است. به عنوان مثال، یک بدنه ممکن است حاوی دادههای جدیدی باشد که باید از طریق روش POST یا PUT به سرویسدهنده اضافه شود.
مزایای RESTful API چیست؟
جمعبندی
RESTful API به عنوان یک روش محبوب و موثر برای طراحی خدمات وب شناخته میشود که بر اصول سادگی، مقیاسپذیری و قابلیت تعامل متکی است. این نوع API با استفاده از متدهای استاندارد HTTP مانند GET، POST، PUT و DELETE، امکان دسترسی و مدیریت منابع را به صورت کارآمد فراهم میآورد. با پشتیبانی از چندین فرمت داده و قابلیت کش کردن، RESTful API به بهبود عملکرد و تعامل با سیستمهای مختلف کمک میکند. همچنین، با جداسازی واضح بین کلاینت و سرویسدهنده، توسعهدهندگان میتوانند به راحتی به بهبود و توسعه مستقل هر بخش بپردازند. به طور کلی، RESTful API به دلیل سادگی در طراحی و پیادهسازی، مقیاسپذیری بالا و توانایی پشتیبانی از معماریهای مختلف، به گزینهای مناسب و مورد استقبال برای ایجاد و مدیریت خدمات وب تبدیل شده است.
سوالات متداول
-
چگونه میتوان کارایی Restful API را بهبود داد؟
- Restful API چه مزایایی نسبت به SOAP دارد؟
- HATEOAS چیست؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
ثبت نظر