نماد سایت برنامه چی | Barnamechi

API چیست؟ چگونه از API استفاده کنیم؟ مقدماتی و به زبان ساده

اگر کمی وارد دنیای برنامه نویسی شده باشید و کمی هم درباره برنامه های آنلاین تحقیق کنید، به کلمه API برخورد میکنید. اصلا این API چیست و چرا و چگونه باید از آن استفاده کنیم؟ در این مقاله از وبسایت برنامه چی میخواهیم بصورت کامل این سوالات را بررسی کنیم. با ما همراه باشید.

این مقاله دارای قسمت های زیر است:
API چیست؟
چرا باید از API استفاده کنیم؟
معماری یک API
کارهایی که میتوانید با API انجام بدهید
چگونه باید از API استفاده کنیم؟
جمع بندی و منابع بیشتر برای مطالعه


API چیست؟

معمولا اگر با پشتیبانی یک نرم افزار که خدمات بانکی ارائه میدهد تماس بگیرید و بپرسید که چرا یک سری سرویس ها در اپلیکیشن شما ارائه نمیشوند؟ معمولا پاسخ می دهند که ما به آن قسمت از اطلاعات دسترسی نداریم. اما اگر همین سوال را از برنامه نویس آن شرکت بپرسید، چیزی که میشنوید این است که “API اجازه دسترسی به آن داده ها را به ما نمیدهد.” خب این API دقیقا چیست؟ بیایید با هم آن را بررسی کنیم.

به ساده ترین زبان ممکن، API را میتوانید یک باجه در یک شرکت دیگر در نظر بگیرید که اطلاعات خاصی را در اختیار اپلیکیشن ما قرار میدهد. پس بصورت کلی API یک سیستم است که درون یک شرکت که اطلاعات قابل ارائه ای دارد طراحی میشود و در اختیار سرویس ها یا نرم افزارهای دیگر قرار میگیرد.

اگر بخواهم API را بصورت تخصصی تر معرفی کنم، باید بدانید که مخفف سه کلمه Application Programming Interface است و معنی آن به زبان خودمان میشود “رابط برنامه نویسی برای اپلیکیشن”. برای درک بهتر فرض کنید یک اپلیکیشن دارید که نیاز دارد یک سری اطلاعات را از یک کمپانی دریافت کند و از آن استفاده کند (مثلا نرم افزار های بانکداری یا آنفالو یاب های اینستاگرام که اولی اطلاعات را از بانک میگیرد و دومی اطلاعات را از اینستاگرام).

حالا به نظر شما این اطلاعات چگونه به اپلیکیشن شما انتقال داده میشود؟ خودتان دستی این اطلاعات را از جایی میگیرید و در نرم افزارتان وارد میکنید؟ خیر. اینجا اپلیکیشن شما خودش با استفاده از کدهایی که نوشتید اطلاعات را از کمپانی مورد نظر دریافت میکند. در آن کمپانی بزرگتر هم که قرار است داده ها را برای شما بفرستد، این روند باز هم با استفاده از نرم افزار انجام میشود. دقت کردید؟ دو نرم افزار با یکدیگر ارتباط برقرار کردند و اطلاعاتی رد و بدل شد. این دقیقا چیزی است که یک API میتواند برای ما انجام بدهد.

به همین دلیل نام آن رابط برنامه نویسی اپلیکیشن است. زیرا با استفاده از برنامه نویسی، یک رابط بین نرم افزار ما و دیگر نرم افزار ها (یا سرویس ها، یا شرکت ها) میسازد. اما شما چه کاری میکنید؟ شما باید زبان این رابط را بلد باشید تا بتوانید کدهای مناسب برای آن را بنویسید تا بقیه کارها را اتوماتیک انجام بدهد.

نمیتوانیم بگوییم API مانند یک درگاه USB یا یک رودخانه از اطلاعات است که همه چیز را در اختیار ما قرار میدهد. بیشتر میتوانیم بگوییم API مانند یک انسان است که قرار نیست همه اطلاعات را در اختیارمان بگذارد. فقط میتوانیم از طریق آن به حوزه محدودی از داده ها که از قبل مشخص شده است دسترسی پیدا کنیم. زیرا نباید همه اطلاعات یک اپ یا کمپانی در اختیار دیگران قرار بگیرد.

در حقیقت API داده هایی را در اختیار کاربران خارجی قرار میدهد که توسط برنامه نویس های داخلی آن شرکت تهیه شده اند. نکته ای که باید به آن توجه داشته باشید این است که API ها زبان خاص خودشان را دارند. پس باید برای کار کردن با آنها زبانشان را بلد باشید.

وقتی که برنامه نویس ها تصمیم میگیرند مقداری از اطلاعات خودشان را در اختیار همه قرار بدهند، در حقیقت بخش هایی از زبانی که برای برنامه نویسی و ساختن نرم افزار خودشان استفاده کرده اند را منتشر میکنند. بقیه برنامه نویس ها هم میتوانند داده ها را با استفاده از ساخت لینک و استفاده از کلاینت های HTTP (برنامه های مخصوصی که URL یا آدرس های اینترنتی را برای شما تولید میکنند)، استخراج کنند (Pull کنند).

چیزی که در این ارتباط برای شما ارسال میشود، در قالب یک متن است که برای کامپیوتر قابل فهم است. پس اگر نتوانید کدهایی که برای پردازش آنها نوشته شده است را بفهمید، این متن ها هم کاملا برای شما بدون معنا خواهند بود.


چرا باید از یک API استفاده کنیم؟

کامپیوتر ها همه کارها را ساده تر میکنند. مخصوصا گشت و گذار در داده های بسیار زیاد که کار زمان بر و زیادی است با استفاده از کامپیوتر ها میتواند در چند ثانیه و با فشردن چند کللید انجام بشود. مثلا فرض کنید که شما یک شرکت دارید و میخواهید بدانید که یک شریک تجاری خاص، چه تعداد فاکتور برای شما ارسال کرده است. الان دو راه دارید، یا میتوانید همه پرونده های کاغذی را روی میزتان بچینید و یکی یکی همه فاکتور ها را پیدا کنید که شاید چندین ماه طول بکشد. (معمولا این صحنه رو توی فیلم ها میبینین که یکی نشسته پشت میز و تا سقف جلوش زونکن هست).

ولی راه دیگر این است که همه فاکتور ها در سیستم شما ثبت شده باشند و با نوشتن یک دستور به نام from در دیتابیس شرکت خودتان، بعد از چند دهم ثانیه همه فاکتور ها برای شما نمایش داده میشوند و میتوانید آنها را با پرینتر چاپ کنید. خب به نظر شما کدام راه بهتر است؟

اما باز هم این روش میتواند بهتر بشود. اگر همه این فاکتورها و مدارک روی یک دیتابیس (پایگاه داده) مرکزی آپلود بشوند، میتوانید یک اپلیکیشن بنویسید که به این دیتابیس دسترسی داشته باشد و همه جزئیات مشتری هایی که میخواهید را درون اپلیکیشن خروجی بگیرید. یعنی دیگر لازم نیست کدنویسی را خودتان هربار انجام بدهید. اپلیکیشن شما خودش با کدنویسی با دیتابیس ارتباط برقرار میکند و داده هایی که میخواهید را به راحتی در اختیار شما قرار میدهد. این روش بسیار سریع تر و دقیق تر از راه های دیگر میباشد.


معماری یک API

یک API از سه قسمت زیر تشکیل شده است:

ترتیب شکل گیری این موارد به این صورت است که یک نفر اول سرور را درست میکند که اطلاعات داخل آن نگهداری میشوند. وقتی که این سرور شروع به کار میکند، برنامه نویس ها اسنادی را درباره سرور منتشر میکنند (به این مستندات Documentation گفته میشه که نحوه استفاده از سرویس با همه جزئیات توش نوشته شده)، در این داکیومنتیشن همه End Point ها (یعنی جاهایی که برنامه نویس ها میتونن با نرم افزارهای خودشون به این سرور متصل بشن و اطلاعات رو دریافت بکنن) و جاهایی که میتوانند داده های خاص را پیدا کنند نوشته شده است. این Documentation ساختار همه داده های روی سرور را به برنامه نویس هایی که خارج از شرکت هستند توضیح میدهد. سپس یک کاربران هم میتوانند با نوشتن درخواست (query) اطلاعات خاصی را از سرور درخواست کنند. یا نم افزاری نویسند که روی دیتابیس جستجو میکند و این داده ها به فرمت قابل استفاده ای تبدیل میکند و نمایش میدهد.

شاید این توضیحات مقداری گیج کننده باشد، بگذارید برای فهم بهتر یک مثال واقعی را با هم بررسی کنیم: یک دفترچه تلفن

اگر به روزهایی که تجهیزات دیجیتال کمتر بود برگردیم، همیشه دفتر تلفن های سفیدی را خریداری میکردیم که به تفکیک حروف الفا میتوانستیم شماره دوستان و آشنایان را درون آن بنویسیم. اگر هم میخواستید کسی را پیدا کنید مجبور بودید بر اساس نام خانوادگی دنبال آن بگردید. این یک مجموعه محدود از اطلاعات بود که برای دسترسی به آن مجبور بودید زمان زیادی را صرف کنید. اما الان با استفاده از جادوی تکنولوژی، همه این داده ها میتوانند در دیتابیس ها پیدا شوند.

حالا بیایید یک دیتابیس خیالی بسازیم و همه اطلاعاتی که در یک دفتر تلفن ثبت میکردیم (یا حتی شاید یکم بیشتر) را در آن ذخیره کنیم. اما سپس میخواهیم یک سری دسته بندی هایی درست کنیم که هرکدام از آنها تعدادی از اطلاعات را بصورت ترکیبی ارائه میدهند. این دسته بندی ها همان End Point هایی هستند که درباره آنها صحبت کردیم. این End Point ها همه اطلاعاتی هستند که API در اختیار برنامه نویس های خارجی قرار میدهد.

در اینجا Endpoint هایی که در این مثال ارائه میدهیم را مشاهده میکنید.

مشخص است که این ­اطلاعات همه آن چیزی نیست که­ درباره یک شخص میتوانید جمع آوری کنید. ینی حتی اگر در دیتابیس ما اطلاعات شخصی تری هم درباره افراد وجود داشته باشد (مانند تاریخ تولد یا مثلا شماره شناسنامه یا هرچیز دیگر)، اما این اطلاعات برای برنامه نویس های بیرونی در دسترس نیست اگر آنها زبان صحبت کردن با Endpoint ها را بلد نباشند.

این Endpoint ها به شما میگویند که چه زبانی را باید برای استفاده کردن و درخواست دادن اطلاعات از دیتابیس استفاده کنید. مثلا اگر بخواهید لیست همه افرادی که نام خانوادگی آنها محمدی است را به دست بیاورید، میتوانید از دو روش زیر استفاده کنید:

  1. یک URL برای درخواست دادن و گرفتن اطلاعات در مرورگر بسازید. در این روش از مرورگر خودتان به عنوان کلاینت استفاده میشود، سپس یک سند متنی در یک زبان کدنویسی برای شما برگردانده میشود که میتوانید از آن استفاده کنید. این URL میتواند چیزی مانند زیر باشد:
    http://api.daftartelefon.com/names?last_name=mohammadi
  2. از یک برنامه که اطلاعات را درخواست میکند استفاده کنید. این برنامه به عنوان کلاینت استفاده میشود و متن کدنویسی شده ای که برگردانده میشود را ترجمه میکند و در یک قالب قابل استفاده در اختیار شما قرار میدهد. شما میتوانید برای استفاده از یک کلاینت HTTP که از قبل ساخته شده است، برنامه خودتان را بنویسید.

روش اول برای درخواست های ساده ای که پاسخ های زیادی را برای شما ارسال نمیکند، بسیار مناسب میباشد (مثلا همه افرادی که نام خانوادگی آنها بهرامی، محمدی یا غیره است و در دیتابیس ما وجود دارند). گزینه دوم نیاز به کدنویسی بیشتری دارد، اما برای برنامه نویس هایی که میخواهند از دیتابیس برای نرم افزارهای دیگر یا بهبود نرم افزار خودشان استفاده کنند، بسیار عالی است.

بسیاری از کمپانی ها از API های عمومی که کمپانی های بزرگتر مانند گوگل و فیسبوک ارائه میدهند استفاده میکنند تا به اطلاعاتی دسترسی داشته باشند که احتمالا هیچ جای دیگری گیر نمی آید. API ها باعث میشوند موانعی که بر سر راه کمپانی های کوچکتر قرار دارد برداشته بشوند. اگر همچنین چیزی وجود نداشت همه باید از اطلاعات خودشان استفاده میکردند که در ابتدای کار هیچوقت نمیتوانستند اطلاعات و داده های زیاد و مناسبی داشته باشند.


کارهایی که میتوانید با API انجام بدهید

پس تا اینجا متوجه شدیم API یک روش است که دو کامپیوتر میتوانند با یکدیگر صحبت کنند و ارتباط داشته باشند. سرور اطلاعات را در اختیار دارد و زبان ارتباط را هم مشخص میکند، کلاینت هم از این زبان استفاده میکند تا اطلاعات را از سرور درخواست بکند. API ها میتوانند همه کاری برای شما انجام بدهند.

اما زیاد تند نروید، باید بگویم که زبان و سینتکسی که برای API استفاده میشود توانایی های آنها را به شدت محدود میکند. یعنی در حقیقت چهار نوع عمل را یک API میتواند انجام بدهد:

وقتی که شما Endpoint ها را با این عمل ها ترکیب کنید، میتوانید همه اطلاعاتی که وجود دارد را از طریق API جستجو یا آپدیت کنید. برای اینکه بدانید چگونه کدنویسی کنید که این اعمال انجام بشوند، باید Documentation را بخوانید. زیرا این اعمال برای هر موردی تفاوت دارد و منحصر به فرد است.

حالا که داریم درباره زبان و سینتکس برنامه نویسی صحبت میکنیم، بهتر است راه هایی که میتوانید برای یک سرور درخواست بفرستید را هم بررسی کنیم.

HTTP: این کلمه مخفف HyperText Transfer Protocol به معنی “پروتکل انتقال ابرمتن” است. اگر از معنی آن چیزی متوجه نشدید نگران نباشید، در ادامه توضیحات بیشتری را درباره آن یاد میگیرید. ساده ترین چیزی که میتوانم درباره این روش به شما بگویم این است که شما الان از طریق همین راه وارد سایت ما شدید و در حال خواندن این مقاله هستید. (به اولین قسمت از آدرس های اینترنتی که توجه کنید میبینید با http:// شروع میشوند).

شما با نوشتن یک URL در مرورگر خودتان به این صفحه وارد شدید. این یک راه واقعا آسان و ساده است که میتوانید به اطلاعات دسترسی داشته باشید. اما اگر اطلاعات زیادی را درخواست کرده باشید، نمیتواند این داده ها را در یک فرمت زیبا برای شما برگرداند.

فرمت های متنی: XML و JSON نام این فرمت های متنی است. این دوتا، زبان های اصلی هستند که برای دسترسی به اطلاعات از طریق API استفاده میشوند. وقتی که اطلاعات در این فرمت ها برای شما ارسال میشود، باید بتوانید این زبان ها را تفسیر کنید تا از این داده ها استفاده کنید و بفهمید سرور چه چیزی ارسال کرده است.


شروع به کار با API

همانطور که بعدا در پروژه هایی که انجام میدهید مشاهده خواهید کرد، بیشتر API ها برای این استفاده میشوند که داده ها را از یک برنامه به فرم های مشابه در یک برنامه دیگر منتقل کنند. مخصوصا زمان هایی که میخواهید اطلاعاتی را به اشتراک بگذارید که مجبورید آنها را بصورت تکراری در برنامه های دیگر استفاده کنید.

مثال هایی که در این قسمت میخواهیم بررسی کنیم پایه ای و ساده هستند و اطلاعات کمی را از سرور درخواست میکنند. اما میتوانند برای فهمیدن مراحل انجام شده در API راهنمایی های خوبی به شما بکنند.

  1. بیشتر API ها به یک API-key نیاز دارند. یعنی هروقت یک API پیدا کردید و خواستید از آن استفاده کنید، باید ابتدا Documentation آن را مطالعه کنید تا ببینید برای وصل شدن به آن به چه چیزهایی نیاز دارید. بسیاری از آنها از شما میخواهند هویت خودتان را تایید کنید، مثلا با وارد شدن با اکانت گوگل میتوانید این کار را انجام بدهید. بعد از آن یک کد منحصر به فرد به شما داده میشود و سپس با استفاده از آن میتوانید به API متصل بشوید. یعنی دیگر لازم نیست هربار برای متصل شدن، ایمیل و پسورد خودتان را وارد کنید (که زیاد هم ایمن نیست و نباید خیلی به آن اعتماد داشته باشید. درباره روش های تایید هویت به زودی توضیحاتی در وبسایت ارائه میدیم).
  2. راحت ترین راه برای دسترسی به API پیدا کردن یک کلاینت HTTP آنلاین است، مانند REST-Client، Postman یا Pow که میتوانید با جستجو کردن از آنها استفاده کنید. این ابزار های از پیش ساخته شده (که عموما رایگان هم هستند)، به شما کمک میکنند که برای دسترسی به API ها بتوانید درخواست های خودتان را بسازید و باید از کد منحصر به فردی که به شما داده شده است (یا همان API-Key) استفاده کنید. هنوز هم نیاز دارید که با سینتکس آنها از طریق Documentation استفاده کنید، اما دانش کدنویسی زیادی نیاز نخواهید داشت.
  3. یکی از راه های پایه ای برای استخراج اطلاعات از یک API، ساختن یک URL (آدرس اینترنتی) از روی داکیومنتیشن آن است. این ویدئوی آموزشی به شما نشان میدهد که چگونه اطلاعات یک مکان جغرافیایی را از API گوگل مپ دریافت کنید و از آن مختصات استفاده کنید تا عکس های نزدیک آن منطقه را در اینستاگرام پیدا کنید.

در کل، یک درخواست که برای API فرستاده میشود، زیاد تفاوتی با URL هایی که در مرورگر مینویسیم یا میبینیم ندارد، اما فرمتی که برگردانده میشود چیزی است که خواندن آنها بیشتر برای کامپیوتر ها راحت است. به عنوان مثال این اتفاقی است که رخ میدهد، وقتی من داده هایی را از API یک سایت ارائه دهنده اطلاعات هواشناسی درخواست میکنم. توجه داشته باشید که این درخواست را از طریق مرورگر ارسال کرده ام.

ساختن یک URL از روی Documentation: اطلاعات هواشناسی را برای یک شهر خاص دریافت میکنیم. به این شکل:

api.openweathermap.org/data/2.5/weather?q={city name}

تایپ کردن در مرورگر اینترنتی: این آدرس را در مرورگر اینترنت خودتان تایپ کنید:

api.openweathermap.org/data/2.5/weather?q=Nashville,TN&APIID={numberslettersnumbersletters}

میتوانید نتیجه را در عکس زیر مشاهده کنید. (البته باید API-Key خودتون رو آخرش بین دوتا آکولاد وارد کنید).


جمع بندی و منابع بیشتر برای مطالعه

یک API برای استخراج اطلاعات خاص از یک نرم افزار دیگر بسیار کارآمد است. اگر شما میدانید که چگونه Documentation را بخوایند و درخواست های خودتان را بسازید، میتوانید اطلاعات ناب زیادی را دریافت کنید، اما ممکن است پردازش این همه اطلاعات کمی سخت و زمانبر باشد. اینجا جایی است که توسعه دهندگان وارد صحنه میشوند. آنها میتوانند نرم افزارهایی بسازند که این اطلاعات را در فرمت های قابل استفاده در نرم افزار یا در صفحه مرورگر نمایش بدهند و کار را برای همه ساده تر بکنند.

در این مقاله فقط موارد پایه ای و سطحی در مورد تکنولوژی API را توضیح دادیم. من برای یادگیری بیشتر در اینترنت جستجوهایی کردم و مقاله ها و ویدئوهایی را پیدا کردم که لینک آنها را برای شما هم در این قسمت قرار میدهم تا اطلاعات بیشتری به دست بیاورید:

اگر شما هم منبع خوبی را میشناسید یا اطلاعاتی در این زمینه دارید، میتوانید با نوشتن آنها در قسمت نظرات (همین پایین) ما را در کامل تر کردن این مقاله آموزشی یاری نمایید. منتظر تجربه ها و نظرات شما دوستان عزیز هستیم.

خروج از نسخه موبایل