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

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

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


API چیست؟

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

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

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

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

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

ارتباط دیتابیس بت api

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

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

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

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


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

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

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

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


معماری یک API

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

  • User (کاربر): شخصی که یک درخواست (request) را درست میکند. (یعینی یک خدمت را از طریق نرم افزار درخواست میکند).
  • Client (کلاینت): کامپیوتری که درخواست کاربر را به سمت سرور ارسال میکند.
  • Server (سرور): کامپیوتری که به درخواست ها پاسخ میدهد (اسم این کامپیوتر سرور هست).

ترتیب شکل گیری این موارد به این صورت است که یک نفر اول سرور را درست میکند که اطلاعات داخل آن نگهداری میشوند. وقتی که این سرور شروع به کار میکند، برنامه نویس ها اسنادی را درباره سرور منتشر میکنند (به این مستندات 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 میتواند انجام بدهد:

  • GET (دریافت): داده ها را از سرور درخواست میکند (این اطلاعات میتواند هم وضعیت باشد، هم داده های مشخص مانند نام_خانوادگی)
  • POST (ارسال): تغییرات را از طریق کلاینت برای سرور ارسال میکند. میتوانید این عمل را مانند اضافه کردن اطلاعات به سرور در نظر بگیرید.
  • PUT (جاگذاری): داده ای که از قبل وجود دارد را جایگزین میکند یا چیزهایی به آن اضافه میکند.
  • DELETE (حذف کردن): اطلاعاتی که روی سرور وجود دارد را حذف میکند.

وقتی که شما 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 key چیست؟

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

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

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

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

درباره نویسنده

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

  1. سلام
    یه پلاگین داریم که میتونه http request بفرسته حالا مواردی که توش میذاریم مثل اسم و اینا رو به یه لینک بفرسته،
    سایت ایرانی یا پلاگین وردپرسی وجود داره که بتونه این موارد رو بگیره در لحظه بگیره و حالا برای سرویس سومی بفرسته؟

    1. سلام خدمت شما دوست عزیز.
      برای اینکه کلاینت بتونه از آپدیت های سرور به صورت خودکار مطلع بشه باید Web Hook راه اندازی کنید یا کاری کنید که کلاینت در بازه های زمانی مشخص به سرور ریکوئست بزنه. از وجود این سرویس به عنوان پلاگین یا سایت اطلاعی ندارم ولی کسی که این سرویس شما رو پیاده سازی کرده میتونه همین سرویس جدید رو هم بسازه.

  2. سلام من میخوام با Asp.net core فقط از این سایت ***
    جدولش رو استخراج کنم چطور میتونم ؟

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

  4. سلام وقتتون بخیر
    بسیار ممنونم از مطب خوبتون
    ببخشید یه سوال داشتم ، زمانی که بخواهیم api مثلا قیمت لحظه‌ای طلا را از سایت‌ها بخریم یکی از آپشن‌ها نوشته تعداد درخواست‌ها در ماه ۱۲۰ تا می‌باشد ، منظور از تعداد درخواست چیست ؟

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

  5. خیلی خوب و عالی توضیح دادید. بهترین منبع فارسی موجود بود که بهش برخوردم. ویدئوی آپارات شما هم در این باره بسیار مفید بود. خسته نباشید میگم بهتون و امیدوارم تولید محتوای این چنینی را ادامه دهید.

  6. سلام وقتتون بخی در کل ممنون از توضیح خوبتون متوجه api شدم . ولی نحوه انجامش رو نمیتونم و یا نیاز به کمک دارم میشه راهنمایی کنید

  7. واقعا حال کردم با این نوع توضیح دادن. دمتون گرم خدا وکیلی چند جا از منابع ایرانی تحقیق کردم بهترین محتوای در رابطه با Api بدونه شک همین محتوای شما بوده. در زمینه بلاک چین تحقیق میکنم و در حال ادامه روند هستم این مطلب خیلی به من کمک کردموفق و پیروز باشید.

    1. سلام و خسته نباشید خدمت شما دوست عزیز.
      خیلی ممنونم از نظر خوبتون و انرژی مثبتی که به ما دادین. انشالله همیشه موفق باشین

  8. سلام وقت بخیر. api برای ارتباط دو تا اپلیکیشن هست .می خواستم بدونم پس مثلا با مرورگر به یک ftp سرور وصل میشیم یعنی اینجا هم api کار اتصال این دو رو برقرار و اطلاعات رو در اختیار کلاینت قرار می ده؟

    1. سلام و خسته نباشید خدمت شما دوست عزیز.
      خیر این کار رو پروتکل FTP انجام میده و میتونه فایل ها رو بین سرور و کلاینت جابجا کنه

  9. سلام.میخام یه api برای وصل شدن سایت فروشگاهی ناپ کامرس یه قسمتی از محصولاتم در سایت snap نمایش بدم.میتونید جهت نوشتنش کمکم کنید

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

    1. سلام و خسته نباشید خدمت شما دوست عزیز.
      ممنونم از نطر خوبتون و انرژی مثبتتون.
      در مورد API های آماده که مربوط به نرم افزارهای آماده هستن، معمولا همشون Documentation دارن که توی این داکیومنتیشن ها همه اطلاعاتی که برای استفاده از API باید بدونین نوشته شده.
      علاوه بر این کار میتونین با استفاده از نرم افزار Postman یک درخواست OPTION به اون Endpoint مورد نظر ارسال کنید. همه جزئیات اون Endpoin رو بهتون برمیگردونه معمولا.
      باز هم سوالی داشتین در خدمتیم.

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

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

  11. امیر حسین صداقتی

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

    ممنون میشم اگه یه توضیحی بدید .

    سال نوتونم مبارک .

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

      1. امیر حسین صداقتی

        خیلی ممنون از توضیحات خوب و کامل تون .

        فقط من چند تا سئوال دیگه هم داشتم که اگه جواب بدید خیلی خوشحال میشم :
        1. فرانت نویس یا کسی که کلاینتیی که کاربر باهاش سر و کله میزنه رو درست میکنه ؛ چطور از Rest API هایی که بک اند نویس در اختیارش قرار میدهد استفاده میکند ؟؟ یعنی آیا فرانت نویس برای استفاده از API هایی که بک اند نویس ساخته ، باید “اونها رو ، به آدرس های صفحات مختلف یک اپلیکیشن یا فرم های مختلف ، کانفیگ و متصل کنه” ، تا در صورت ثبت درخواست ، بتونه اطلاعاتی ، از بک اند دریافت کنه و به شکلی که میخواد در اپلیکیشن ، نمایش بده ؟؟
        2. آیا بک اند نویس موقعه ی پیاده سازی http request method ها در فایل API ، دستورات SQL رو پیاده سازی میکنه که میتونه ، پاسخ متناسب با درخواست کاربر رو از پایگاه داده واکشی کنه ؟؟ ؛ و اگه قرار باشه پاسخ درخواست برگرده ، آیا از طریق بدنه ی همون متود است که ، پاسخ درخواست برمیگرده به کلاینت ؟

        با تشکر از سایت خوبتون .

        1. سلام مجدد خدمت شما.
          خوشحالم که این پاسخ براتون مفید بوده.
          برای سوال اول: وقتی یک برنامه نویس فرانت اند میخواد از API هایی که برنامه نویس بک اند در اختیار اون قرار داده استفاده کنه، معمولا با یک سری Endpoint سر و کله میزنه. برای اینکه ساده تر متوجه بشین، Endpoint ها رو میتویم همون URL در نظر بگیریم. یعنی برنامه نویس بک اند میاد یک سری URL تعریف میکنه که از طریق این URL ها اطلاعات خاصی از طرف سرور به سمت کلاینت ارسال میشه. به مجموعه این URL ها میگیم API Service اون سرور. ساختار این URL ها هم به این صورت هست که مثلا اطلاعات کاربر ها از طریق example.com/users و اطلاعات پست ها از طریق example.com/posts ارائه میشن. پس برای هر دسته از اطلاعات معمولا یک URL خاص تعریف میشه. حالا برنامه نویس سمت کلاینت چجوری از اینها استفاده میکنه؟ برای اپلیکیشن اندروید مثال میزنم، توی اندروید باید بیایم به این URL ها ریکوئست بزنیم. این ریکوئست ها روی همین URL هایی که از قبل تعریف شده انجام میشن، ساختار مشخصی دارن و اطلاعات خاصی رو هم میتونیم باهاشون بفرستیم که همه اینها رو برنامه نویس های سمت سرور برای ما مشخص میکنن. وقتی که ریکوئست زده شد توی اپلیکیش اندروید، یک بلوک از اطلاعات که معمولا با فرمت JSON هستن به سمت اپلیکیشن فرستاده میشه و برنامه نویس کلاینت باید این بلوک رو بگیره، اطلاعاتی که نیاز داره رو از توش در بیاره و هرجایی که میخواد نمایش بده. یعنی توی صفحه پروفایل اپلیکیشن باید به آدرس example.com/users ریکوئست بزنیم و جایی که قصد داریم پست ها رو نشون بدیم، به آدرس example.com/posts. البته این رو هم بدونین که برای این کار توی اندروید معمولا از کتابخانه های معروفی مثل Retrofit و Volley استفاده میشه. برای اینکه با ساختار API ها هم آشنا بشین میتونین عبارت WordPress Rest Api Handbook رو توی گوگل سرچ کنین و ببینین API های وردپرس چجوری کار میکنن.
          برای سوال دوم: بله بک اند نویس اگر از پایگاه داده SQL استفاده کرده باشه دقیقا دستورات رو اجرا میکنه تا داده ها رو واکشی، ذخیره، دستکاری یا حذف بکنه. در مورد قسمت دوم که از طریق همون متد هست یا نه، بله میتونه باشه. ولی جواب این سوال بیشتر به نوع معماری سمت سرور بر میگرده، بعضی از طراحی ها طوری هست که لایه های انتزاعی بیشتری بین پایگاه داده و API ایجاد میکنن که وابستگی این ها به هم از بین بره و بتونن بعدا اگر نیاز بود مثلا پایگاه داده رو کلا عوض کنن ولی API دست نخورده باقی بمونه. ولی در نهایت یک متد این پاسخ رو برمیگردونه و به دست کلاینت میرسونه.
          باز هم سوالی بود در خدمتیم.

  12. فرید آزاد خانقاه

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

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

  13. خیلی ممنون از توضیحاتتون.
    ساده و در عین حال حرفه ای بود
    بالاخره معنی ای پی آی رو متوجه شدم 🙂

  14. سلام این توضیح ها فقط برای حرفه ای ها هست ، میتونید یک api از بورس ایران برای من درست کنید هزینه مشکلی ندارم

  15. شما آموزش ویدیویی برای اتصال API دارید اگه دارین لطفا بفرمایید میخوا تهیه کنم با تشکر

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اسکرول به بالا