به طراح وب خوش آمدید.
رابط های برنامه نویسی کاربردی یا API ها راهی برای برنامه ها یا سرویس های کامپیوتری برای تعامل با یکدیگر هستند. این تعامل معمولاً از طریق یک نقطه پایانی API ارائه شده توسط برنامه ای که مشتری از آن استفاده می کند، رخ می دهد.
این مقاله دو رویکرد رایج برای ساخت APIها را مقایسه میکند: API انتقال وضعیت نمایندگی (REST) و Web API.
REST API چیست؟
برخلاف تصور رایج، REST API یک پروتکل نیست. این یک معماری است و محبوب ترین معماری برای توسعه API است. همانطور که در GraphQL vs REST توضیح می دهیم: تنها چیزی که باید بدانید این است که REST بدون حالت است، بنابراین هیچ داده یا وضعیتی بین درخواست ها ذخیره نمی شود.
REST همچنین چندین محدودیت معماری را برای ساخت برنامه هایی که از طریق HTTP ارتباط برقرار می کنند تعریف می کند:
- معماری سرویس گیرنده-سرور
- بی تابعیتی
- رابط واحد
- قابلیت ذخیره سازی در حافظه پنهان
- معماری سیستم لایه ای
- کد در صورت درخواست
REST نسبت به پروتکل های دیگر یا معماری های API راحت تر است. همچنین بسیاری از مزایای دیگر را ارائه می دهد که آن را به انتخاب ترجیحی برای بسیاری از توسعه دهندگان API تبدیل می کند:
- فرمت های مختلف پیام: APIهای REST عمدتاً با JSON برای سریالسازی دادهها استفاده میشوند، اما با فرمتهای پیام متعدد از جمله JSON، HTTP، متن ساده و XML کار میکنند. این مجموعه از گزینهها به آن برتری نسبت به پروتکلهایی مانند پروتکل دسترسی به شیء سرویس (SOAP) میدهد که عمدتاً با XML از طریق HTTP کار میکنند، در حالی که گزینههایی مانند JSON بهطور قابلتوجهی سبکتر، با پشتیبانی از آرایه انعطافپذیرتر هستند و در مقایسه با XML آسانتر تجزیه میشوند.
- روش های HTTP: REST معمولاً با هر یک از آنها استفاده می شود
GET
،POST
،PATCH
،DELETE
یاPUT
روش های استخراج داده ها و اجرای پرس و جوها، بسته به اجرای سرویس. این روشها کدهای موفقیت و خطای عمومی HTTP را برمیگردانند. روش های دیگر عبارتند ازOPTIONS
،HEAD
وTRACE
. این روشها بین سرویسها ناسازگار هستند، زیرا برخی از ارائهدهندگان ممکن است تنها یک روش را متناسب با نیازهای خود پیادهسازی کنند. - معماری رها شده: REST یک معماری مشتری-سرور است، بنابراین منطق آن از ارائه جدا شده است – چندین بخش را می توان به طور همزمان بدون تداخل کار کرد.
- مقیاس پذیری: API های REST ساده هستند که استفاده از آنها را آسان می کند. با این حال، اگر نیاز به افزایش مقیاس دارید، میتوانید نقاط پایانی جدیدی ایجاد کنید تا منطق پیچیدهتری را در بر بگیرد.
- قابلیت ذخیره سازی در حافظه پنهان: اگرچه REST بدون حالت است، پاسخ سرور روی کلاینت را می توان در حافظه پنهان ذخیره کرد تا از تکرار درخواست های اضافی جلوگیری شود. پاسخ سرور معمولاً اطلاعاتی در مورد نحوه ذخیره سازی در حافظه پنهان می دهد – با درخواست های ذخیره سازی مشتری برای یک دوره معین.
- ایمنیپاسخ: در بیشتر موارد، نقاط پایانی REST از طریق نقاط پایانی HTTPS قابل دسترسی هستند، که تضمین میکند همه اتصالات API با TLS/SSL ایمن هستند. REST همچنین از دیگر طرحهای مجوز و احراز هویت مانند OAuth2 و JSON Web Tokens (JWT) پشتیبانی میکند.
Web API چیست؟
Web API به سادگی یک رابط برای دسترسی به منابع سرور از طریق HTTP است. این اصطلاح به مفهوم اشاره دارد و نه به فناوری خاصی – Web API را می توان با استفاده از فناوری های مختلفی مانند جاوا و ASP.NET ایجاد کرد. APIهای وب از یک رابط منبع باز استفاده می کنند و از بسیاری از اشیاء مشتری مانند مرورگرها، تلفن های هوشمند، تبلت ها و لپ تاپ ها استفاده می کنند.
APIهای وب مشخصات پروتکل را با مفاهیمی مانند ذخیره سازی، نسخه سازی و فرمت های مختلف محتوا پیاده سازی می کنند. یک Web API بسته به نحوه ساخت آن ممکن است REST API باشد یا نباشد. Web API ها معمولاً در یک سیستم توزیع شده برای ارائه خدمات در دستگاه های مختلف مانند تلفن های هوشمند و لپ تاپ ها استفاده می شوند و به سمت مشتری یک برنامه وب محدود می شوند.
در اینجا دو نمونه از وب APIهای رایج استفاده می شود:
- API های گوگل: اینها شامل APIهای YouTube است که به توسعه دهندگان اجازه می دهد ویدیوهای YouTube را در برنامه های خود مانند وب سایت ها جاسازی کنند، و Google Maps API که به توسعه دهندگان اجازه می دهد از Google Maps در صفحات وب با استفاده از رابط های جاوا اسکریپت یا فلش استفاده یا جاسازی کنند.
- Twitter API: اینها عبارتند از Twitter Search API که روشهایی را برای تعامل با جستجوی توییتر ارائه میکند و REST API که به شما امکان دسترسی به دادههای اولیه توییتر را میدهد.
Web API به عنوان یک تعامل بین سیستم ها پیاده سازی می شود. در اینجا نحوه انتقال داده در چنین API آورده شده است:
- دستگاه سرویس گیرنده درخواست ها را به وب سرور ارسال می کند.
- وب سرور درخواست را دریافت می کند، آن را پردازش می کند و سپس آن را برای اجرا به دستگاه مشتری ارسال می کند.
- خروجی در اختیار کاربر قرار می گیرد.
ویژگی های مفید Web API عبارتند از:
- معماری نور: API های وب برای دستگاه هایی با پهنای باند محدود مانند گوشی های هوشمند عالی هستند.
- سرصفحه پیام توصیفی: API های وب دارای سرصفحه های پیام توصیفی هستند که می توانند حاوی اطلاعاتی در مورد نوع محتوا، طرح امنیتی یا نحوه رسیدگی به حافظه پنهان باشند.
- پشتیبانی از انواع داده ها: بدنه وب API را می توان برای هر چیزی استفاده کرد، از جمله فایل های باینری (ویدئو، تصاویر، اسناد)، XML ساده، JSON و HTML.
- خدمات منبع گرا: Web API می تواند منابع را مطابق با معماری REST در معرض دید قرار دهد.
- پیکربندی و راه اندازی آسانپاسخ: راه اندازی و اجرای Web API آسان است.
Web API در مقابل REST API
حالا بیایید این دو API را با جزئیات بیشتری مقایسه کنیم.
شباهت های معماری
Web API و REST API شباهت هایی در معماری دارند – بیایید نگاهی به آنها بیندازیم.
- بی تابعیتی: درخواستهای HTTP بهصورت مجزا انجام میشوند و اساساً فاقد وضعیت هستند، زیرا هر درخواست حاوی اطلاعات کافی برای تکمیل آن است. درخواست های متعدد فقط از طریق اطلاعات مشترک مانند کوکی ها یا شناسه جلسه به یکدیگر مرتبط می شوند. عدم همگام سازی حالت پیچیدگی را کاهش می دهد و عملکرد را بهبود می بخشد زیرا سرور مجبور نیست درخواست های مشتری را پیگیری کند. پرس و جوهای موازی همچنین می توانند در چندین سرور مقیاس شوند.
- معماری لایه ای: هر دو از یک معماری لایه ای پشتیبانی می کنند که در آن استقرار API، احراز هویت درخواست و ذخیره سازی می تواند در چندین سرور انجام شود.
- منبع شرقد: در معماری های منبع گرا، منابع به شناسه های منبع یکنواخت (URI) نگاشت می شوند. هم Web و هم REST API منبع گرا هستند زیرا منابع را از طریق URI در معرض دید قرار می دهند.
- بادسترسی: در REST و Web API، درخواست هایی که هر بار که فراخوانی می شوند همان اطلاعات را برمی گرداند در حافظه پنهان ذخیره می شوند. به عنوان مثال، فراخوانی OPTION در یک نقطه پایانی در حافظه پنهان ذخیره می شود زیرا خروجی هر چند بار که فراخوانی شود یکسان خواهد بود. این ویژگی که به عنوان idempotency شناخته می شود، مبنای خوبی برای تعیین زمان ذخیره داده ها در حافظه پنهان است. بیتوانی همیشه در REST رعایت میشود، اگرچه در Web API نه به اندازه آن. فراخوانی API idempotent تماسی است که نتایج آن هرگز تغییر نخواهد کرد – مهم نیست چند بار فراخوانی شود – حتی با توانایی تغییر چیزی در سرور. نمونه هایی از روش های idempotent عبارتند از GET، HEAD و OPTIONS.
تفاوت در معماری
در حالی که Web API و REST الگوهای معماری مشابهی دارند، تفاوتهای کلیدی نیز دارند.
- هماهنگی سمت مشتری و سرور: API های REST دارای یک معماری جفت شده هستند که امکان توسعه مستقل سمت مشتری و سرور را فراهم می کند. با Web API، تغییرات بین مشتری و سرور با دقت بیشتری هماهنگ می شوند.
- رابط: بسته به جزئیات پیاده سازی، API های REST تمایل دارند از رابط های استاندارد صنعتی استفاده کنند. وب APIها بسته به ارائه دهنده API از رابط های سفارشی استفاده می کنند.
ارتباط
API های وب به اندازه کافی انعطاف پذیر هستند تا هر سبک ارتباطی را در خود جای دهند، در حالی که API های REST عمدتاً با JSON، XML و متن ساده استفاده می شوند. این گزینهها به این معنی است که REST API برای انتقال دادههای متنی، مانند عملیاتهای ایجاد، خواندن، بهروزرسانی و حذف (CRUD) در پایگاه داده به خوبی کار میکند، اما وقتی صحبت از دادههای باینری میشود، محدودتر هستند.
API های وب تجربه بسیار بهتری را برای سرویس هایی که به داده های باینری نیاز دارند، مانند سرویس های پخش موسیقی یا ویدیو، ارائه می دهند، زیرا از فرمت های پیام بیشتری پشتیبانی می کنند.
موارد استفاده کنید
در حالی که این فرمتهای API در بسیاری از موارد قابل تعویض هستند، چند سناریو وجود دارد که یکی بهتر از دیگری است:
- خدمات و برنامه های ابریA: به دلیل ماهیت بدون حالت، API های REST در سرویس های ابری استفاده می شوند، زیرا اجزای بدون حالت می توانند مقیاس شوند و مجدداً به کار گرفته شوند تا با تغییرات سازگار شوند. خدمات و معیارهای ابری معمولاً به بهترین شکل به عنوان REST API نشان داده می شوند زیرا نیازی به کد سفارشی نیست.
- خدمات پخش جریانی: API های وب از پشتیبانی بهتر و بار کمتری روی باینری های برنامه های حافظه داخلی یا دستگاه هایی با پهنای باند محدود برخوردار هستند، بنابراین برای سرویس هایی که نیاز به پخش جریانی دارند مناسب هستند.
- کار با پایگاه داده (CRUD): ارائه عملکرد CRUD از طریق REST API نسبت به Web API آسانتر و آسانتر است.
مدیریت API های REST برای درخواست های پیچیده ای که نیاز به دسترسی به منابعی دارند که در یک سلسله مراتب ساده سازماندهی نشده اند، دشوار است. دلیل این امر این است که URI های آن به منابع اشاره دارد، به این معنی که مدیریت چنین موقعیتی شامل دستکاری مسیرهای URI، پارامترهای درخواست و بدنه درخواست است که هدف REST را شکست می دهد. در این مورد، Web API ترجیح داده می شود زیرا اجازه سفارشی سازی را می دهد و پشتیبانی گسترده ای از هدرهای پاسخ و URI های درخواست دارد.
با پشتیبانی از تکنیکهایی مانند تماسهای ناهمزمان که پیادهسازی با معماری REST آسان نیست، Web API راهی برای رفع نیازهای پیچیده API است.
خلاصه
Web و REST API ها برای ایجاد برنامه هایی استفاده می شوند که منابع را فراهم می کنند و از طریق پروتکل HTTP ارتباط برقرار می کنند. در حالی که REST محدودیتهای معماری را از طریق یک رابط منفرد توصیف میکند، APIهای وب معمولاً مفهومی هستند که بسته به اجرا میتوانند RESTful باشند.
هر دو Web API و REST API فرمت های سبک وزنی هستند که در بسیاری از موقعیت ها قابل تعویض هستند. با این حال، در مقایسه با REST API ها، Web API ها رابط قابل تنظیم تر و پشتیبانی از انواع پیام های بیشتر را ارائه می دهند و از تعاملات پیچیده بین سرورها و کلاینت هایی که با داده های باینری کار می کنند، پشتیبانی می کنند.
و با خدمات میزبانی برنامه Kinsta، میتوانید پروژههای API خود را سریعتر و کارآمدتر بسازید، آزمایش کنید و به ابر ارسال کنید.