آیا قبلا در مورد استفاده از 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 میباشد و در سال 2000 توسط روی فیلدینگ معرفی شد. این یک سبک معماری متشکل از 6 محدودیت است که باید برطرف گردد تا به عنوان RESTful شناخته شود. به عبارت سادهتر مجموعه قوانینی است که توسط توسعه دهندگان دنبال میشود تا مطمئن شوید دادهها در قالب خاصی ارسال و دریافت میشوند. API نحوه برقراری ارتباط را مشخص میکند، در حالی که REST نحوه قالب بندی API را مشخص میکند. درخواست ارسالی URL است و پاسخ دادهای است که برای شما ارسال میشود.
شش محدودیتی که برای RESTful بودن یک API باید برآورده شود:
1) رابط یکنواخت
برای کلیه APIها باید یک رابط یکنواخت بین کلاینت و سرور استفاده شود. وقتی یک توسعه دهنده روی API یک کلاس کار کرد، باید بتواند به راحتی روی سایر APIهای همان کلاس نیز کار کند. با استفاده از یک رابط یکنواخت، معماری ساده شده و درک APIها بهبود مییابد. پیاده سازی API نیز برای همه آسانتر میشود، زیرا رابط استاندارد یکسان است. چهار اصل رابط یکنواخت به شرح زیر میباشد:
- مبتنی بر منابع
- دستکاری منابع از طریق نمایندگی
- پیامهای خود توصیف
- هایپرمدیا به عنوان موتور اپلیکیشن (HATEOAS)
2) Client-Server
کلاینت و سرور باید دو موجودیت جداگانه و مستقل باشند. به این صورت که کلاینت با ذخیره سازی دادهها سر و کار ندارد، بلکه قابلیت حمل و جابهجایی را بهبود میبخشد. سرور نیز با رابط کاربری سر و کار ندارد و مقیاس پذیری سرور را بهبود میدهد.
3) Stateless
هر درخواست از کلاینت به سرور باید شامل کلیه اطلاعات لازم به عنوان بخشی از URI، پارامترهای کوئری استرینگ، متن و هدرها برای پردازش این درخواست باشد. Session state باید کاملا روی کلاینت وجود داشته باشد و نباید از هیچ کانتکست ذخیره شدهای در سرور استفاده کند.
4) سیستم لایهای
یک سیستم لایهای با امکان تعادل بار، معماری و مقیاس پذیری سیستم را بهبود میبخشد. سیستمهای لایهای همچنین ممکن است سیاستهای امنیتی را اعمال کرده و حافظه پنهان مشترکی را برای عملکرد بهتر ارائه دهند.
5) قابلیت کش
کلاینت میتواند پاسخهای خود را کش کند. بنابراین باید پاسخها صریحا به عنوان حافظه پنهان یا غیر قابل ذخیره برچسب گذاری شوند تا از استفاده مجدد کلاینت از دادههای نامناسب در پاسخ به درخواستهای بعدی، جلوگیری شود.
6) کد درخواستی (اختیاری)
عملکرد کلاینت با اجرای اسکریپتها قابل افزایش است. بدین ترتیب سرورها میتوانند عملکرد خود را در کلاینتها گسترش دهند تا منطق آنها را اجرا کنند.
اگر یک API محدودیتهای فوق را برآورده کند RESTful API نامیده میشود. REST API معمولا از طریق HTTP صورت میگیرد، هنگامی که در API وب استفاده میشود. از این رو REST API از کلاینت به سرور فراخوانی شده و پاسخ را به عنوان داده از طریق پروتکل HTTP برمیگرداند.
حالا بیایید یک درخواست API را تست کنیم. به این خاطر ما از Twitter API برای دریافت توییت در مورد کلمه خاصی که وارد میکنیم، استفاده خواهیم کرد.
قبل از تست این API، ابتدا باید یک اکانت دولوپر در تویتر ایجاد کنید. پس از وارد کردن use case خود برای این API و تأیید ایمیل، از شما خواسته میشود نام پروژه خود را وارد کنید. میتوانید نام پروژه مورد نظر خود را انتخاب کنید، به شرطی که قبلا گرفته نشده باشد و سپس به شما مجوزهای API key، API secret key به همراه یک Bearer Token داده میشود. هنگام درخواست API میتوانید از این اعتبارنامهها استفاده کنید.
تست API توییتر
برای تست API میتوانید از Postman استفاده کنید. این ابزاری را فراهم کرده که توسعه API را آسان میکند.
مرحله 1 - یک تب جدید باز کنید و درخواست GET را انتخاب کنید. سپس درخواست API را مانند تصویر زیر وارد کنید.
مرحله 2 - روی تب authorization کلیک کنید و حین ایجاد حساب کاربری توییتر خود، Bearer Token را همانطور که برای پروژه شما ارائه شده است وارد نمایید.
مرحله 3 - مطمئن شوید که فیلدهای زیر را در تب Headers خود دارید. قسمت مجوز حاوی نشان دهندهBearer شما است و کوکی حاوی personalization_id و guest_id خواهد بود که مختص شما میباشد.
مرحله 4 - اکنون روی دکمه ارسال کلیک کنید و پاسخ زیر را مشاهده میکنید. پاسخ حاوی دادههایی است که پارامتر کوئری را همانطور که توسط ما وارد شده، شامل میشود (برای این مثال vaccine است). هر مورد داده شامل یک شناسه است که Tweet ID میباشد و فیلد متن آن Tweet Text است.
تبریک میگویم شما اولین درخواست API خود را انجام دادید. در صورت تمایل میتوانید خودتان با این API بیشتر کار کنید و همچنین برای کسب اطلاعات بیشتر در مورد استفاده از Twitter API به این لینک مراجعه کنید.
سخن پایانی
امیدوارم که در مورد REST API دانش کافی را کسب کرده باشید و اکنون بدانید چگونه از آن برای ارتباطات در اینترنت استفاده کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید