API چیست؟

تا به حال دقت کرده‌اید که اپلیکیشن‌های موبایل آب و هوایی اطلاعات خود را از کجا دریافت می‌کنند؟ بدیهی است که اطلاعات خود را از سایت‌های معتبر هواشناسی می‌گیرند. این اطلاعات از طریق یک رابط برنامه‌نویسی به‌ نام api منتقل شده و قابلیت خوانایی پیدا می‌کنند. در این مقاله در مورد api های مختلف و کاربردها و مفاهیم مختلف آن بحث شده است.از لحاظ فنی، API مخفف رابط برنامه‌نویسی اپلیکیشن (Application Programming Interface) است. در برخی موارد، اکثر شرکت‌های بزرگ ‌API‌ها را برای مشتریان خود و یا برای استفاده داخلی ساخته‌اند.اما چگونه می‌توان APIرا به سادگی توضیح داد؟ و آیا معنای آن وسیع‌تر از آن چیزی است که در توسعه و تجارت استفاده می‌شود؟ اول، بیایید به عقب برویم و به اینکه خود وب چگونه کار می‌کند نگاهی داشته باشیم.www و ریموت سرورهر صفحه ای در اینترنت در جایی بر روی یک ریموت سرور ذخیره شده است. هر چه باشد یک ریموت سرور خیلی چیز مرموزی نیست، فقط بخشی از یک کامپیوتر است که به منظور پردازش درخواست‌ها بهینه شده و از راه دور قابل دسترس است.برای داشتن چشم‌اندازی کلی از موضوع، شما می‌توانید یک سرور در لپ‌تاپ خود راه بیندازید که توانایی ارائه سرویس برای کل یک وبسایت در وب را داشته باشد. (در حقیقت یک سرور محلی چیزیست که مهندسان برای توسعه وبسایت‌ها قبل از ارائه آنها به عوام، از آن استفاده می‌کنند.)هنگامی که شما آدرس صفحه فیسبوک www.facebook.com را به مرورگر خود وارد می‌کنید، یک درخواست به ریموت سرور فیس بوک ارسال می‌شود. هنگامی که مرورگر پاسخ خود را دریافت می‌کند، کد را تفسیر می‌کند و صفحه را نمایش می‌دهد.برای مرورگر، که همچنین به عنوان کلاینت (client) نیز شناخته می‌شود، سرور فیسبوک یک API است. این بدان معنی است که هر بار که شما یک صفحه را در وب مشاهده می‌کنید با برخی از API‌های ریموت سرور ارتباط برقرار می‌کنید.یک API دقیقا همان ریموت سرور نیست بلکه بخشی از سرور است که درخواست‌ها را دریافت می‌کند و پاسخ ها را ارسال می‌کند.API‌ها به عنوان راهی برای خدمت به مشتریان شمااحتمالا شنیده‌اید که شرکت‌ها API‌هایشان را در قالب بسته‌هایی به عنوان محصول ارائه می‌دهند. به عنوان مثال ودر آندرگراند (Weather Underground) دسترسی به API داده‌های آب و هوایی خود را به فروش می‌رساند.مثال: وبسایت کسب و کار کوچک شما دارای یک فرم است که مشتریان از آن برای ثبت قرار ملاقات استفاده می‌کنند. شما می‌خواهید برای مشتریان خود این امکان را فراهم کنید که به طور خودکار یک رویداد تقویم گوگل همراه با جزئیات مربوط به آن قرار ملاقات را ایجاد کنند.استفاده از API: ایده این است که شما می‌خواهید سرور وبسایت شما با سرور گوگل، با درخواست ایجاد یک رویداد با جزئیات داده شده، به صورت مستقیم گفتگو داشته باشند. و بعد سرور شما پاسخ گوگل را دریافت کند، آن را پردازش کند و اطلاعات مربوطه را مانند پیام تأییدی به کاربر، به مرورگر ارسال کند.در حالت دیگر مرورگر شما اغلب می‌تواند درخواست API را با کنار زدن سرور شما مستقیما به سرور گوگل هدایت کند.تفاوت API تقویم گوگل با API هر ریموت سرور دیگر در چیست؟از نظر فنی، تفاوت در فرمت درخواست و پاسخ است.برای رندر کردن تمام صفحه وب، مرورگر شما انتظار یک پاسخ در فرمت اچ‌تی‌ام‌ال (HTML) را دارد، که حاوی کد نمایشی است، در حالی که فراخوانی API تقویم گوگل (Google Calendar’s API) احتمالا در قالب‌هایی مانند جی‌سون (JSON) فقط اطلاعات را فراهم می‌کند.اگر سرور وبسایت شما درخواست API را تولید می‌کند پس سرور وب‌سایت شما کلاینت است (همانند مرورگر شما که زمانی که از آن برای رفتن به یک وبسایت استفاده می‌کنید یک کلاینت بحساب می‌آید).از دید کاربران شما، API‌ ها به آنها اجازه می‌دهند که بدون ترک وبسایت شما کارشان را کامل انجام دهند.بیشتر وبسایت‌های مدرن حداقل برخی از API‌ های واسطه‌ای را استفاده می‌کنند.در حال حاضر بسیاری از مشکلات یک راه حل واسطه‌ای دارند، حال می‌خواهد یک کتابخانه یا یک سرویس باشد و یا استفاده از یکی از راه‌حل‌های موجود که معمولا ساده‌تر و مطمئن‌تر است.برای تیم‌های توسعه غیرمعمول نیست که برنامه خود را بین چندین سرور که با یکدیگر از طریق API در حال گفتگو هستند، تقسیم کنند. سرورهایی که عملکردهای کمکی را برای سرور اصلی نرم‌افزار اجرا می‌کنند معمولا به عنوان سرویس‌های میکرو (Microservices) معرفی می‌شوند.به طور خلاصه، هنگامی که یک شرکت به مشتریان خود یک API ارائه می‌دهد، به این معنی است که آنها مجموعه‌ای از آدرس‌های اختصاص یافته ساخته‌اند که پاسخ‌های خالص‌داده را برمی‌گردانند. به این معنی که پاسخ‌ها حاوی نوعی سربار نمایشی نمی‌باشد که شما در یک رابط گرافیکی مانند یک وبسایت انتظار وجودش را دارید.آیا می‌توانید این درخواست‌ها را با مرورگر خود انجام دهید؟ معمولاً بله، از آنجا که انتقال واقعی ‌اچ‌تی‌تی‌پی (HTTP) به صورت متن انجام می‌شود، مرورگر شما همیشه بهترین روش را برای نمایش پاسخ پیاده می‌کند.به عنوان مثال، شما می‌توانید به API گیت‌هاب (GitHub) به طور مستقیم با مرورگر خود و بدون نیاز به یک توکن، دسترسی داشته باشید.این پاسخ جی‌سون را در زمان بازدید از مسیر API کاربر گیت‌هاب در مرورگرتان دریافت می‌کنید.)https://api.github.com/users/petrgazarov:({"login": "petrgazarov","id": 5581195,"avatar_url": "https://avatars.githubusercontent.com/u/5581195?v=3","gravatar_id": "","url": "https://api.github.com/users/petrgazarov","html_url": "https://github.com/petrgazarov","followers_url": "https://api.github.com/users/petrgazarov/followers","following_url": "https://api.github.com/users/petrgazarov/following{/other_user}","gists_url": "https://api.github.com/users/petrgazarov/gists{/gist_id}","starred_url": "https://api.github.com/users/petrgazarov/starred{/owner}{/repo}","subscriptions_url": "https://api.github.com/users/petrgazarov/subscriptions","organizations_url": "https://api.github.com/users/petrgazarov/orgs","repos_url": "https://api.github.com/users/petrgazarov/repos","events_url": "https://api.github.com/users/petrgazarov/events{/privacy}","received_events_url": "https://api.github.com/users/petrgazarov/received_events","type": "User","site_admin": false,"name": "Petr Gazarov","company": "PolicyGenius","blog": "http://petrgazarov.com/","location": "NYC","email": "petrgazarov@gmail.com","hireable": null,"bio": null,"public_repos": 23,"public_gists": 0,"followers": 7,"following": 14,"created_at": "2013-10-01T00:33:23Z","updated_at": "2016-08-02T05:44:01Z"}به نظر می‌رسد مرورگر به‌خوبی پاسخ «جی‌سون» JSON را ترسیم کرده است. پاسخ جی‌سون‌ مانند این آماده استفاده در کد شما است. استخراج داده‌ها از این متن ساده است. سپس شما می‌توانید هر کاری که می‌خواهید با داده انجام دهید.A برای اپلیکیشن (Application) است.برای بستن موضوع، بیایید چند مثال دیگر از API‌ها داشته باشیم.اپلیکیشن می‌تواند به بسیاری از موارد اشاره داشته باشد. اینها چند نمونه در زمینه API هستند:یک قطعه نرم‌افزاری با یک عملکرد مشخص.تمام سرور، کل برنامه، یا فقط یک قسمت کوچک از یک برنامه.اساسا هر قطعه‌ای از نرم‌افزار که می‌تواند به طور جداگانه از محیطش جدا شود، می‌تواند یک (A) در API باشد، و احتمالا یک نوع API نیز دارد.فرض کنید شما در کد خود از یک کتابخانه واسطه‌ای استفاده می‌کنید. پس از وارد شدن کتابخانه به کد شما، کتابخانه بخشی از برنامه کلی شما می‌شود. به عنوان یک قطعه مشخص از نرم افزار، کتابخانه به احتمال زیاد دارای یک API است که به آن اجازه می‌دهد تا با بقیه کد شما ارتباط برقرار کند.مثال دیگر: در طراحی شی‌گرا (Object Oriented Design)، کد در قالب اشیا سازماندهی شده است. اپلیکیشن شما ممکن است دارای صدها شی تعریف شده باشد که می‌توانند با یکدیگر در تعامل باشند.هر شی یکAPI دارد - مجموعه ای از روش‌ها و خصوصیت‌های عمومی که از آنها برای ارتباط با سایر اشیاء در اپلیکیشن شما استفاده می‌کند.یک شی همچنین ممکن است دارای منطق درونی باشد که محرمانه است، به این معنی که از محدوده بیرونی قابل دسترسی نیست. (و نه یک API).از آن چه ما پوشش داده‌ایم، امیدوارم معنای وسیع‌تری از API و همچنین استفاده‌های متداول‌تر امروزی از این اصطلاح را دریافته باشید.منبعتلگرام-فینمگ