API چیست؟
API مخفف application programming interface (رابط برنامهنویسی نرمافزار) واسطهای است بین یک کتابخانه با برنامههایی که از آن کتابخانه تقاضای سرویس میکنند.
به صورت ساده و قابل فهم، API ها مثل function هایی هستند که در یک سرور (یا سیستم عامل) وجود دارد و یک برنامه نویس در برنامه خود میتواند آنها را فراخوانی و استفاده کند بدون اینکه به سورس و نحوه عملکرد آن دسترسی داشته باشد.
به عنوان مثال ویندوز یک سیستم عامل کدبسته (غیر اپن سورس) است اما مایکروسافت برای ویندوز، APIهایی قرار داده است که با استفاده از آنها، برنامهنویسان میتوانند از قابلیتها و سرویسهای سیستمعامل ویندوز در توسعه و نوشتن برنامههای کاربردی خود استفاده کنند.
API های تحت وب
API های تحت وب به مراتب گستردهتر، پرکاربردتر و از همه مهمتر؛ مستقل از سیستمعامل است. یعنی یک برنامه ممکن است روی سیستم عامل لینوکس باشد اما شما که یک سرور ویندوزی دارید، میتوانید از API آن به سادگی استفاده کنید.
SOAP و REST دو گروه معروف از API های تحت وب هستند که دومی سادهتر و استفاده از آن آسانتر است. اگر شما کتاب RESTful Web APIs را که تازه چاپ شده، دانلود و مطالعه بفرمایید، بیشتر با آن آشنا میشوید.
سایتهای پربازدید و شبکههای اجتماعی معمولا API دارند که موجب میشود برنامه (اپلیکیشن)های زیادی برای تعامل با آنها (نمایش/جستجو/نوشتن) در سیستمعاملهای مختلف ایجاد شود و معمولا تعداد بسیار زیادی از کاربران از همین طریق از شبکههای اجتماعی استفاده میکنند.
معرفی چند نمونه API
یکی از جذابترین API های معرفی شده در این لیست برای من API مربوط به تبدیل فایل بود که به کمک آن میتوانید هر نوع فایل (صوتی/تصویری/متنی/…) را به نوع دیگر تبدیل کنید!
مثلا میتوانید یک فایل wma یا wav را به mp3 تبدیل کنید یا یک فیلم avi را به mp4
یا میتوانید یک فایل word تحویل بدهید و یک فایل txt تحویل بگیرید و …
آپدیت: امروز سایت Encoding.com را دیدم که در پلن رایگان خود نیز امکانات خوبی برای تبدیل فایلهای صوتی و تصویری به صورت آنلاین توسط صفحه وب و همچنین API فراهم آورده است که برای سایتهای حاوی صوت و تصویر عالی است.
در این صفحه گیتهاب نیز لیست خوبی فراهم آمده است.
API های سرویس آپلود فایل: به شخصه از این API ها زیاد استفاده کردهام. خصوصا برای تهیه بکاپ اتوماتیک آنلاین.
بسیاری از سرویسهای اشتراک فایل یا آپلودسنترهای معتبر، دارای یک رابط برنامه نویسی API برای developer ها هستند که به برنامه نویس امکان میدهد به سادگی فایلهای موردنظرش را در آن سرویس آپلود کند. از جمله آنها میتوان به filecloud.io و ge.tt و … اشاره کرد.
ناگفته نماند که برخی از اینگونه سایتها، امکان آپلود از طریق ftp را نیز در اختیار کاربر قرار میدهند که کار را بسیار سادهتر میکند .از جمله این سایتها نیز میتوان uploading.com و archive.org را نام برد.
API برای OCR: که البته بیشتر برای دور زدن کپچاهای ساده کاربرد دارد تا تبدیل متن اسکن شده به متن تایپشده 🙂
این یک نمونه سرویس رایگان (اما محدود به 5 هزار در ماه) برای OCR است که API هم دارد و این هم یک نمونه کدبرای کار با آن است. این سرویس نیز هرچند رایگان نیست اما قیمت آن تقریبا معادل رایگان است!
چگونه از API استفاده کنیم؟
طبعا API برای برنامهنویسان تهیه شده و برای استفاده از آن لازم است در دانش برنامهنویسی اطلاعاتی داشته باشید. بسیاری از سایتهایی که دارای API هستند، به همراه آن مثال و نمونهکد آموزشی نیز ارائه میدهند.
در این مطلب نیز بیش از 16 مقاله در مورد استفاده از چند API ی معروف لیست شده است.
چگونه API مورد نیازخود را پیدا کنم؟
ممکن است شما برای کارتان به یک API نیاز داشته باشید. اولین راهی که برای یافتن API کارآمد به ذهن هر کس میرسد، جستجو در گوگل یا پرسش در Stackoverflow است. اما علاوه بر آن، شما میتوانید از سایتهایی همچون Mashape و ProgrammableWeb نیز در این جهت استفاده کنید که انواع API های مختلف را لیست کردهاند…
چگونه برای سایت خود API بنویسم؟
ممکن است فکر کنید که نوشتن یک API برای یک سایت سخت است اما اینطور نیست. نوشتن API آسانتر از نوشتن برنامه کامل یک سایت است زیرا در API صرفا قرار است حسب آدرس درخواستی، دادهها (اطلاعات) با ساختاری که از قبل تعیین کردید (مثلا JSON) به عنوان پاسخ آورده شود.
همچنین همانطور که بخشی از یک سایت میتواند فقط مختص کاربران احراز هویت شده باشد، در API هم میتواند همه یا بخشی از آن مختص کاربرانی باشد که احراز هویت شدهاند. البته یک نکته ظریف وجود دارد و آن اینکه در API نمیتوان کپچا گذاشت چون API ها توسط برنامهها (و نه انسان) استفاده میشود. لذا API های متداول، به جای user, password از یک کلید رندوم مثلا 50 کاراکتری به نام API key استفاده میکنند که تشخیص آن عملا غیرممکن است (برخلاف پسوردها که معمولا کوتاه است و با حمله brute force میتوان آن را حدس زد). ضمن اینکه در این روش، پسورد کاربر محفوظ میماند و همچنین با API key های مختلف، میتوان نظارت و کنترل بهتری روی برنامه استفادهکننده از API سایتمان داشته باشیم و در صورت نیاز موارد مشکوک یا پرمصرف را مسدود یا غیررایگان کنیم.
اگر هنوز در برنامهنویسی PHP چندان مسلط نیستید، کتابخانههای PHP وجود دارد که برای شروع API نویسی، نمونه خوبی هستند مثلا این فریمورک مخصوص API از آقای martin bean را ببینید.