آیا قبلا در مورد استفاده از REST API در وب چیزی شنیدهاید؟ آیا میدانید لحظه کلیک کردن در یک صفحه وب چگونه در اینترنت ارتباط برقرار میشود؟ آیا به این فکر کردهاید که چگونه شبکه جهانی به شما امکان ارسال و دریافت داده را به این راحتی میدهد؟ برای کسب اطلاعات بیشتر در مورد چگونگی ارتباطات در اینترنت به مطالعه این مقاله ادامه دهید.
API چیست؟
قبل از اینکه به REST API بپردازیم، ابتدا باید معنای API (مخفف Application Programming Interface) و نقش آن در ارسال و دریافت اطلاعات را بفهمیم. طبق ویکی پدیا API یک رابط محاسباتی است که تعاملات بین چندین واسطه نرمافزار را تعریف میکند. بگذارید آن را به بیان سادهتری توضیح دهیم. API رابطی است که به برنامه کمک میکند تا به برنامه دیگری متصل شود. این بستری است که از طریق آن میتوان دادهها را بین برنامهها در اینترنت ارسال و دریافت کرد. هر بار که در حال مرور یک وب سایت در لپ تاپ خود هستیم و یا با یک اپلیکیشن در تلفن همراه خود کار میکنیم، اساسا از یک API استفاده کردهایم.
بیایید سعی کنیم آن را با استفاده از یک مثال واقعی درک کنیم. تصور کنید که از کتابخانهای بازدید میکنید و در جستجوی کتاب خاصی هستید. در نگاه اول احتمالا نمیتوانید کتاب را پیدا کنید، بنابراین از کتابدار کمک میگیرید و میپرسید فلان کتاب کجاست. کتابدار نیز دو کار میتواند انجام دهد، یا به قسمت مورد نظر میرود و کتاب را پیدا میکند و به شما میدهد، یا شما را به آن قسمت راهنمایی میکند تا مطمئن شود که کتاب را دریافت میکنید. او درخواست شما (گرفتن کتاب X) را میگیرد و مطمئن میشود که شما پاسخی دریافت میکنید (کتاب X خود را دریافت کنید).
این همان کاری است که API برای کتاب فروشی آنلاین یا برنامه خرید کتاب انجام میدهد (مانند آمازون). وقتی کتاب خاصی را انتخاب میکنید، API درخواست را به سرور ارسال میکند. اگر آن کتاب موجود نباشد، سرور پایگاه داده را بررسی کرده و سپس پاسخ را ارسال میکند. API این پاسخ را دریافت کرده و آن را با فرمتی قابل خواندن برای شما میفرستد. در صورت بروز خطا، API این خطا را کنترل کرده و آن را به روشی قابل خواندن ارسال میکند.
علاوه بر این APIها به عنوان سطح امنیتی نیز عمل میکنند. به این صورت که اطلاعات تلفن شما هرگز به طور کامل در سرور قرار نمیگیرد و دادههای سرور هم هرگز به طور کامل به تلفن شما ارسال نمیشوند. از طریق این APIهاست که دادهها ارسال و دریافت میشوند، بنابراین با به اشتراک گذاری فقط بیتهای لازم، یک سطح امنیتی اضافه میشود. اکنون که دانستید API چیست، اجازه دهید به بررسی REST API بپردازیم.
REST API
REST مخفف Representational State Transfer میباشد و در سال ۲۰۰۰ توسط روی فیلدینگ معرفی شد. این یک سبک معماری متشکل از ۶ محدودیت است که باید برطرف گردد تا به عنوان RESTful شناخته شود. به عبارت سادهتر مجموعه قوانینی است که توسط توسعه دهندگان دنبال میشود تا مطمئن شوید دادهها در قالب خاصی ارسال و دریافت میشوند. API نحوه برقراری ارتباط را مشخص میکند، در حالی که REST نحوه قالب بندی API را مشخص میکند. درخواست ارسالی URL است و پاسخ دادهای است که برای شما ارسال میشود.
شش محدودیتی که برای RESTful بودن یک API باید برآورده شود:
۱) رابط یکنواخت
برای کلیه APIها باید یک رابط یکنواخت بین کلاینت و سرور استفاده شود. وقتی یک توسعه دهنده روی API یک کلاس کار کرد، باید بتواند به راحتی روی سایر APIهای همان کلاس نیز کار کند. با استفاده از یک رابط یکنواخت، معماری ساده شده و درک APIها بهبود مییابد. پیاده سازی API نیز برای همه آسانتر میشود، زیرا رابط استاندارد یکسان است. چهار اصل رابط یکنواخت به شرح زیر میباشد:
- مبتنی بر منابع
- دستکاری منابع از طریق نمایندگی
- پیامهای خود توصیف
- هایپرمدیا به عنوان موتور اپلیکیشن (HATEOAS)
۲) Client-Server
کلاینت و سرور باید دو موجودیت جداگانه و مستقل باشند. به این صورت که کلاینت با ذخیره سازی دادهها سر و کار ندارد، بلکه قابلیت حمل و جابهجایی را بهبود میبخشد. سرور نیز با رابط کاربری سر و کار ندارد و مقیاس پذیری سرور را بهبود میدهد.
۳) Stateless
هر درخواست از کلاینت به سرور باید شامل کلیه اطلاعات لازم به عنوان بخشی از URI، پارامترهای کوئری استرینگ، متن و هدرها برای پردازش این درخواست باشد. Session state باید کاملا روی کلاینت وجود داشته باشد و نباید از هیچ کانتکست ذخیره شدهای در سرور استفاده کند.
۴) سیستم لایهای
یک سیستم لایهای با امکان تعادل بار، معماری و مقیاس پذیری سیستم را بهبود میبخشد. سیستمهای لایهای همچنین ممکن است سیاستهای امنیتی را اعمال کرده و حافظه پنهان مشترکی را برای عملکرد بهتر ارائه دهند.
۵) قابلیت کش
کلاینت میتواند پاسخهای خود را کش کند. بنابراین باید پاسخها صریحا به عنوان حافظه پنهان یا غیر قابل ذخیره برچسب گذاری شوند تا از استفاده مجدد کلاینت از دادههای نامناسب در پاسخ به درخواستهای بعدی، جلوگیری شود.
۶) کد درخواستی (اختیاری)
عملکرد کلاینت با اجرای اسکریپتها قابل افزایش است. بدین ترتیب سرورها میتوانند عملکرد خود را در کلاینتها گسترش دهند تا منطق آنها را اجرا کنند.
اگر یک API محدودیتهای فوق را برآورده کند RESTful API نامیده میشود. REST API معمولا از طریق HTTP صورت میگیرد، هنگامی که در API وب استفاده میشود. از این رو REST API از کلاینت به سرور فراخوانی شده و پاسخ را به عنوان داده از طریق پروتکل HTTP برمیگرداند.