قبل از این که توسعه نرمافزار را شروع کنم، API چیز سادهای به نظر میرسید. در هنگام کار در زمینه فناوری، میبینیم که ایدههای غلط زیادی درباره معنای اصلی این اصطلاح رایج بیان میشوند.
از نظر فنی، API مخفف Application Programming Interface (رابط برنامهنویسی اپلیکیشن) است. اکثر شرکتهای بزرگ، بالاخره در یک روزی یک API برای مشتریهای خود، یا برای استفاده داخلی ساختهاند.
اما یک API را چگونه میتوان به زبان ساده توضیح داد؟ و آیا معنای گستردهتری از آنچه ما در توسعه و کسب و کار استفاده میکنیم وجود دارد؟ در ابتدا، بیایید به نحوه کار خود وب برگردیم.
WWW و سرورهای کنترل از راه دور
من وقتی که درباره وب فکر میکنم، یک شبکه بزرگ از سرورهای متصل را تصور میکنم.
هر صفحهای بر روی اینترنت، بر روی یک سرور کنترل از راه دور ذخیره شده است. سرورهای کنترل از راه دور آنچنان هم جادویی نیستند؛ بلکه فقط بخشی از یک کامپیوتر هستند که بهینهسازی شدهاند تا درخواستها را پردازش کنند.
برای ایجاد یک چشم انداز از آنها، میتوانید یک سرور را بر روی لپتاپ خود راهاندازی کنید، که قادر به رسیدگی به یک وبسایت کامل بر روی وب باشد. (در واقع، توسعه دهندگان از یک سرور محلی (Local Server) برای توسعه وبسایتهای خود قبل از قرار دادن آنها در معرض عموم استفاده میکنند.)
وقتی که «www.facebook.com» را در مرورگر خود مینویسید، یک درخواست به سرور کنترل از راه دور Facebook ارسال میشود. پس از این که مرورگر شما پاسخ را دریافت کرد، کد آن را تفسیر کرده، و صفحه را نمایش میدهد.
از نظر یک مرورگر که به عنوان یک client هم شناخته میشود، Facebook در واقع یک API است. این یعنی این که هر زمان شما صفحهای را بر روی وب بازدید میکنید، با API یک سرور کنترل از راه دور در تعامل هستید.
یک API، مشابه به سرور کنترل از راه دور نیست؛ بلکه بخشی از آن سرور است که درخواستها را دریافت میکند و پاسخها را ارسال میکند.
APIها، به عنوان روشی برای خدمتگذاری به مشتریهای خود
احتمالا درباره شرکتهایی که APIها را به عنوان یک محصول بستهبندی میکنند، شنیدهاید. برای مثال، Weather Underground دسترسی به API دادههای آب و هوای خود را میفروشد.
سناریو فرضی: وبسایت کوچک شما، یک فرم برای ثبت قرار ملاقات مشتریان دارد. شما میخواهید که مشتریانتان بتوانند یک تقویم Google را به همراه جزئیات قرار ملاقات، به طور خودکار بسازند.
نحوه استفاده API: ایده اصلی این است که سرور شما بتواند مستقیما با سرور Google، به همراه یک درخواست برای ساخت یک رویداد به همراه جزئیات داده شده، در ارتباط باشد. سپس سرور شما پاسخ گوگل را دریافت کند، پردازش کند و اطلاعات مربوطه را به مرورگر ارسال کند. مثلا یک پیغام تایید برای کاربر.
یک روش جایگزین هم این است که مرورگر شما، سرور شما را دور بزند و یک درخواست API را مستقیما به سرور گوگل ارسال کند.
API تقویم گوگل چگونه از API هر سرور کنترل از راه دور دیگری متفاوت است؟
از نظر فنی، تفاوت آنها در قالب درخواستها و پاسخهای آنها است.
مرورگر شما برای رندر کردن کل صفحه، انتظار یک پاسخ در قالب HTML را دارد، که شامل کدهای نمایشی است؛ در حالیکه API تقویم گوگل فقط دادهها را بر میگرداند، و به احتمال زیاد این دادهها در قالبی مانند JSON هستند.
اگر سرور وبسایت شما در حال ارسال درخواست API است، پس در نتیجه این سرور یک client است. (درست به مانند client بودن مرورگر شما، وقتی که از آن برای مرور یک وبسایت استفاده میکنید.)
از نظر کاربر شما، API آنها را قادر میسازد تا بدون ترک کردن وبسایت، کار مورد نظر را به اتمام برسانند.
اکثر وبسایتهای مدرن شامل یک API هستند.
امروزه اکثر مشکلات یک راه حل که از جای دیگری میآید دارند؛ چه در قالب یک کتابخانه، یا چه در قالب یک سرویس. معمولا استفاده از یک راه حل از پیش موجود، سادهتر و قابل اعتمادتر است.
تقسیم کردن برنامه خود در سرورهای مختلف و صحبت با یکدیگر از طریق APIها، برای گروههای توسعه چیز رایجی است. سرورهایی که توابع کمکی را برای برنامه اصلی اجرا میکنند، معمولا به عنوان «microservers» شناخته میشوند.
به طور خلاصه، وقتی که یک شرکت یک API را برای مشتریهای خود فراهم میکند، در واقع مجموعهای از URLهای اختصاصی ساختهاند، که پاسخهای داده خالص را بر میگردانند. به عبارتی، پاسخها هیچ نوع کد نمایشیای مانند آنچه در یک رابط کاربری گرافیکی انتظار دارید را بر نمیگردانند.
آیا میتوانید این درخواستها را با مرورگر خود ارسال کنید؟ معمولا میتوانید. از آنجایی که انتقالات HTTP واقعی از طریق متن اتفاق میافتند، مرورگر شما همیشه بهترین کاری که میتواند را برای نمایش پاسخ انجام خواهد داد.
برای مثال، میتوانید مستقیما از طریق مرورگر خود بدون هیچ گونه نیاز به یک نشانه دسترسی، به API گیتهاب دسترسی داشته باشید. در اینجا، یک پاسخ JSON را مشاهده میکنید، که هنگام بازدید از 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 را نمایش داده است. یک پاسخ JSON به مانند این مورد، برای استفاده در کد شما آماده است. استخراج داده از این متن ساده است. بعد از آن نیز میتوانید هر کاری که میخواهید را با این دادهها انجام دهید.
«A» نمایانگر «Application» است.
برای اتمام این موضوع، بیایید برخی مثالهای دیگر از APIها را نیز ببینیم.
«Application» میتواند به چیزهای زیادی اشاره داشته باشد. در اینجا، برخی از آنها را در محدوده API میبینید:
- یک قطعه نرمافزار، با یک تابع متمایز.
- کل سرور، کل برنامه، یا بخش کوچکی از برنامه.
اساسا هر قطعه نرمافزاری که بتواند از محیط خود جدا شود، میتواند «A» در API باشد.
فرض کنید که شما از یک کتابخانه در کد خود استفاده میکنید. یک کتابخانه پس از این که در کد شما گنجانده شود، بخشی از برنامه کلی شما میشود. با توجه به این که این کتابخانه یک قطعه نرمافزار متمایز است، احتمالا یک API دارد که شما را قادر میسازد تا با باقی کد خود در ارتباط باشید.
در اینجا یک مثال دیگر را میبینید: در طراحی با گرایش به آبجکت، کد شما به در قالب چند آبجکت سازماندهی میشود. برنامه شما میتواند صدها آبجکت داشه باشد که میتوانند با یکدیگر در ارتباط باشند.
هر آبجکت یک API دارد. مجموعهای از متدها و ویژگیهای public، که از آنها برای تعامل با دیگر آبجکتهای موجود در برنامه شما استفاده میکند.
یک آبجکت همچنین ممکن است نوعی منطق داخلی داشته باشد که private (خصوصی) است؛ یا به عبارتی از محدوده خارجی مخفی شده است.
با توجه به مواردی که توضیح داده شدند، امیدوارم که معنای گستردهتر API را نیز به همراه استفادههای دیگر از این اصطلاح در دنیای امروزی برداشت کرده باشید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید