وب سرویس (Web Service) یک نوع از API (Application Programming Interface) است. به عبارت دیگر، API نقطه ارتباط میان نرمافزارها است که اجازه تبادل اطلاعات و ارتباط بین آنها را میدهد و وب سرویس یکی از روشهای پیادهسازی API است.
وب سرویسها به منظور ارتباط بین سیستمها و اشتراک اطلاعات بین نرمافزارها ایجاد میشوند. این سرویسها اغلب از پروتکلهای استاندارد وب مانند HTTP (Hypertext Transfer Protocol) یا HTTPS (HTTP Secure) برای انتقال داده استفاده میکنند.
نکته مهم این است که API به عنوان یک مفهوم عمومیتر از وب سرویس به کار میرود. API میتواند به صورت محلی (مثل APIهایی که برنامههای داخلی یک سیستم با یکدیگر ارتباط برقرار میکنند) یا به صورت آنلاین و از راه دور (مثل وب سرویس ها) باشد. وب سرویس مختصراً به API اشاره دارد که از طریق شبکه اینترنت (وب) قابل دسترسی است.
در ادامه چندتا از پروتکل های موجود در وب سرویس ها را بررسی می کنیم:
- Extensible Markup Language (XML): این پروتکل برای علامتگذاری، کدگذاری و کدگشایی دادهها استفاده میشود.
- Simple Object Access Protocol (SOAP): این پروتکل برای انتقال دادهها استفاده میشود. پروتکل SOAP ایجاد شد که زبانهای برنامهنویسی مختلف بتوانند به سرعت و با کمترین زحمت با یکدیگر ارتباط برقرار کنند.
- Web Services Description Language (WSDL): این پروتکل برای اطلاعرسانی به برنامه مشتری دربارهٔ چه چیزی در خدمات وب شامل شده است و چگونه میتوان به آن متصل شد، استفاده میشود.
- Universal Description, Discovery and Integration (UDDI): این پروتکل برای فهرست کردن خدمات موجود در یک برنامه استفاده میشود. همچنین به خدمات وب این امکان را میدهد که برای سرویسهای دیگر قابل کشف باشند.
- Representational State Transfer (REST): هرچند که تمام خدمات وب از پروتکل REST استفاده نمیکنند، برنامههای ساختهشده با واسطهای برنامهنویسی RESTful سبکتر، قابل مدیریتتر و قابل مقیاسپذیرتر هستند.
webserviceها برای مجموعهای از کاربردها استفاده میشوند، اما متد رایجترین آن برای استفاده مجدد از کد و ارتباط برنامههای موجود است.
webservice به توسعهدهندگان کمک میکند که برنامهها را به قطعاتی تقسیم کنند که میتوانند برای نیازهای مختلف استفاده و مجدداً استفاده شوند. به عنوان مثال، ممکن است بیش از یک برنامه به یک ابزار تبدیل یا یک تابع گزارشدهی نیاز داشته باشد. این امکان به دلیل پروتکلهای ارتباطی یکپارچه خدمات وب وجود دارد.
علاوه بر این، میتوان از webservice برای ارتباط دادهها بین پلتفرمهای مختلف استفاده کرد. از آنجایی که همه برنامهها میتوانند شامل یک مؤلفه webservice باشند، این ویژگی میتواند هر برنامه را به یک برنامه کاملاً همگام تبدیل کند.
REST API
REST API (Representational State Transfer API) یک معماری برنامهنویسی است که برای ارتباط بین سیستمهای مختلف در وب استفاده میشود. REST بر اساس مفاهیم ساده و استانداردهای مشخصی که به روشهای معینی از منابعی (Resources) که در وب دسترسی مییابد، تعریف شده است. در REST، هر منبع با یک آدرس یکتا (URI) مشخص میشود و از متدهای HTTP برای انجام عملیات مختلف بر روی این منابع استفاده میشود.
تعدادی از اصطلاحات اساسی و مفاهیم REST عبارتند از:
منابع (Resources): هر چیزی که در یک سیستم میتواند یک آدرس یکتا داشته باشد، به عنوان یک منبع در REST شناخته میشود. مثالهایی از منابع شامل کاربران، محصولات، سفارشات و غیره میباشند.
عملیات (Operations): عملیاتها یا اعمالی که بر روی منابع انجام میشود، از طریق متدهای HTTP انجام میشود. متدهای رایج در REST شامل GET (دریافت اطلاعات)، POST (ایجاد منبع جدید)، PUT (بهروزرسانی یک منبع موجود)، DELETE (حذف یک منبع) و غیره میباشند.
پیمایش منابع (Resource Navigation): منابع میتوانند با یکدیگر به صورت پیچیده تر ارتباط برقرار کنند، به عنوان مثال یک منبع سفارش ممکن است به یک منبع محصول ارتباط داشته باشد. در REST، این ارتباطات معمولاً با استفاده از لینکها در پاسخها مشخص میشوند.
نمایندهگان منابع (Resource Representations): اطلاعاتی که از یک منبع درخواست میشود، به عنوان نمایندهگان منابع شناخته میشوند. معمولاً این نمایندهگان به صورت JSON یا XML ارائه میشوند.
REST API بر سادگی، قابلیت استفاده و استفاده از ویژگیهای معماری موجود در پروتکل HTTP تاکید دارد و یکی از محبوبترین روشها برای ساخت و ایجاد وبسرویسها است.
REST API میتواند با استفاده از زبان برنامهنویسی پایتون نوشته شود و در واقع، پایتون یکی از زبانهای بسیار محبوب برای پیادهسازی RESTful سرویسها است. از فریمورکهای مختلفی در پایتون برای توسعه REST API استفاده میشود. برخی از این فریمورکها عبارتند از:
Flask: یک فریمورک سبک و انعطافپذیر که برای توسعه سریع REST API ها مورد استفاده قرار میگیرد.
Django REST framework: این فریمورک بر روی فریمورک Django ساخته شده است و امکانات قدرتمندی برای توسعه REST API ارائه میدهد.
FastAPI: یک فریمورک سریع و پرفرمانس برای توسعه RESTful سرویسها که بر اساس استاندارد OpenAPI (و ساختاری که به صورت خودکار اسناد را تولید میکند) عمل میکند.
این فریمورکها ابزارهای مفیدی را برای مدیریت روندهای مربوط به RESTful API ارائه میدهند، از جمله routing(مسیریابی)، پردازش ورودی و خروجی، تولید اسناد توضیحی (Swagger/OpenAPI)، و امکانات امنیتی مختلف. انتخاب فریمورک بستگی به نیازها و ترجیحات توسعه دهندگان و شرایط پروژه دارد.