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

APIاگر وارد دنیای نرم افزار شده باشید ، قطعا تا الان واژه API به گوشتون خورده ، حالا این API که انقدر راجبش صحبت میشه و انقدر اهمیت داره ، چیه واقعا؟!?‍♂️API چیست ؟??واژه API مخفف کلمه Application Programming Interface است که اگر بخوایم ترجمش کنیم به زبان فارسی ، میشه رابط برنامه نویسی اپلیکیشن ( البته ترجمه اصطلاحات تخصصی برنامه نویسی کار درستی نیست ?).کوتاه ترین تعریفی که میشه از API داشت اینه : API یک رابطه بین دو نرم افزاره ، همین ، که اگر بخوام بیشتر توضیح بدم میتونم بگم این رابطه نرم افزاری ارتباط بین سرویس دهنده و سرویس گیرنده رو هم برقرار میکنه.سرویس گیرنده به چه کسی میگن؟!? درواقع سرویس گیرنده به تمام کسانی میگن که از API ما استفاده میکنن و به همین صورت سرویس دهنده هم به کسی میگویند که به سرویس گیرنده سرویس ارائه میدهد.منظورم از سرویس چیه؟! سرویس میتونه هر چیزی باشه به طور مثال : ارسال یک پیامک ، یا ارسال یک ایمیل ، یا ارسال شرایط آب و هوایی یک منطقه یا ارسال قیمت ارز و سکه و طلا یا . . . .چرا استفاده از API ضروری و حیاتیه؟!میخوام با طرح چنتا مثال ساده این موضوع رو براتون شفاف کنم ، پس با من باش??گوشی های موبایل ، امروزه تقریبا میشه گفت پراستفاده ترین دستگاها بین مردم هستن ، درسته؟!و داخل این گوشی ها ، اپلیکیشن های زیاده وجود داره که هر کدوم از این ها دیتا های خیلی زیادی رو بهمون نمایش میدن ، ما با این اپلیکیشن ها قیمت ارز ، طلا ، سکه ، دلار رو چک میکنیم ، شرایط جوی مناطق مختلف رو برسی میکنیم ، اخبار مطالعه میکنیم ، توی فروشگاه های اینترنتی مثل دیجی کالا خرید میکنیم و . . . آیا تمام این اطلاعاتی که ما توی گوشی موبایل خودمون میبینیم ، توی موبایل ما ذخیره شدند؟!اگر جوابتون بله بود باید بگم که اشتباه میکنید ، اینطور نیست ، ولی چرا؟!اگر قرار باشه تمام اطلاعاتی که ما ازشون استفاده میکنیم توی تلفن همراهمون باشه که باید یه حافظه خیلی خیلی زیادی داشته باشیم و خب آیا تمام مشکل ما کم بودن مقدار حافظست؟!خیر ، تصور کنید یه نرم افزار برای دیدن اخبار دانلود کردید و اون نرم افزار بیاد و تمام اخباری که تا اون روز ثبت شده را توی تلفن همراه شما ذخیره کنه و عملا دیگه اینجا نیازی به API نداره ، شاید با خودتون بگید خب اخبار های روز های آینده چی میشه ؟!بله دقیقا این مسئله ای بود که میخواستم راجبش صحبت کنم ، بروز بودن اطلاعات داخل نرم افزار برای ما حائز اهمیته و خب این کاریه که API برای ما انجام میده ، پس بریم که با هم یه نتیجه گیری کنیم ?✏دلایل استفاده از API و آشنایی با کاربرد های آن؟! همون طور که گفتیم یکی از دلایل اینه که داخل نرم افزار های موبایلی یا دسکتاپی ما نباید حافظه زیادی از دستگاه کاربر اشغال کنیم و از طرفی هم ، نیاز به استفاده از داده ها داریم ، پس از API استفاده میکنیم.دومین دلیل اینه که ما نیاز به دیتا های بروز داریم و خب عملا راهی جز استفاده از API نداریم.سومین دلیل: خودتون رو درحال توسعه یک نرم افزار تصور کنید ، به طور مثال این نرم افزار یک نرم افزار مدیریت بانک هستش ، توی این نرم افزار شما نیاز دارید که قیمت ارز هارو به صورت لحظه به لحظه داشته باشید ، توی این موقعیت راهی جز استفاده از API سریس هایی که قیمت ارزهارو ارائه میدن ندارید.در توسعه نرم افزار ها و اپلیکیشن های تحت وب نیز API کاربرد دارد ، چطور؟!برنامه نویس بک اند یک API رو برای نرم افزار توسعه میدهد و برنامه نویس فرانت اند با درخواست دادن به اون API به داده ها و دیتا ها دسترسی پیدا میکنه و به کاربر نمایش میدهد. (هرچند میتوان بدون توسعه API هم نرم افزار های تحت وب را توسعه داد ولی این رو مدیر پروژه با توجه به نیازمندی های پروژه مشخص میکنه که آیا نیازه API توسعه داده بشه یا خیر ، ولی با توسعه API اگر بخواهید نرم افزار هایی تحت پلتفر موبایل یا دسکتاپ برای وب سایت خود پیاده کنید دیگر مانعی نخواهید داشت.?)زمانی که از API استفاده میکنیم ، دقیقا چه اتفاقی میوفته؟!زمانی که شما از یک API استفاده میکنید ، این ارتباطی که این همه مدت راجبش صحبت کردم بین سرویس گیرنده ( که شما هستید) و سرویس دهنده (وب سریسی که شما از API ان استفاده میکنید ) تشکیل میشه و عملا شما میتونید از توابع و متد هایی که سرویس دهنده مشخص کرده داخل نرم افزار خودتون استفاده کنید ، اگر بخوایم عمیق تر بشیم ، درواقع شما به صورت مستقیم نمیتونید از توابع و متد های سرویس دهنده استفاده کنید بلکه شما با توجه به نیاز خودتون درخواستی به EndPintی که سرویس دهنده مشخص کرده میدهید و سرویس دهنده اطلاعاتی که شما نیاز داشتید رو تحت قالب JSON (اگر نمیدونی JSON چیه اینجا کیلیک کن) توی Respons براتون ارسال میکنه.( اصلا نگران نباشی الان تمام این هارو یه دور با هم مرور میکنیم ??)EndPoint چیه؟! به آدرسی میگن که سرویس دهنده مشخص کرده برای ارتباط و استفاده از API ، مثلا میگه مسعود ، اگر میخوای از API من استفاده کنی ، تا قیمت دلار رو بهت بدم به این آدرس ریکوئست بفرست : example.com/api/v1/dollarبه این آدرس EndPoint میگن ، Response هم اون پاسخی هست که از طرف وب سریس برای ما ارسال میشه به فرض ما میخواستیم با استفاده از سامانه پیامکی ، پیامکی ارسال کنیم ، با استفاده از API درخواست میفرستیم و در صورت موفق بودن ، وب سرویس به ما پاسخ میده که درخواست با موفقیت انجام شد ، به این ریسپانس ( Response ) میگویند.توسعه API در زبان های برنامه نویسی مختلف?این API که این همه راجبش صحبت کردیم چطوری توسعه داده میشه؟! به عکس ریز دقت کن.سیر تکامل روش های توسعه APIتوی عکس بالا سیرتکامل روش های توسعه API رو مشاهده میکنیم ،که میخوایم با هم تک تک برسیشون کنیم (من دیگه مخفف هر کدوم و یا سال تولدشون رو نمیگم چون توی تصویر هست) (چون توی ویرگول نمیشه اول خط کلمه انگلیسی نوشت من قبل از نوشتن هر کلمه انگلیسی یه "و" میذارم ، دیگه به بزرگی خودتون ببخشید❤)و RPC: با استفاده از RPC شما میتوانستید یک تابعی را از داخل یک سیستم دیگر که به شبکه متصل است صدا بزنید ولی خب یک سری مشکلات داشت که با هم برسیش میکنیم.و CORBA :یه مقدار که جلو تر رفتیم به خاطر نواقصی که RPC داشت CORBA متولد شد ، نرم افزار هایی که با هم کار میکردند ، همگن نبودند (یعنی سیستم عامل متفاوتی داشتند یا با زبان های برنامه نویسی متفاوتی دولوپ شده بودند) و همین دلیل باعث شد CORBA متولد شود و نواقص RPC را جبران کند.و SOAPخیلی سریع برای توسعه وب سرویس همه گیر شد و هنوز هم در شرایطی خاص استفاده میشه ، در واقع SOAP یک پروتکله که اگر بخواید با استفاده ازش وب سرویس توسعه بدید نسبت به REST و یا GraphQL که یک نوع معماری هستند خیلی سخت تر و پیچید تر است.و RESTتقریبا میشه گفت پر استفاده ترین معماری برای ساخت API همین REST هست ، REST بر خلاف SOAP یک معماری هست و کار باهاش نسبت به SOAP بسیار راحت تره ، REST یک معماری Client Server میباشد ، یعنی Server و Client به طور کامل از هم جدا هستند و سمت کلاینت فقط Call API انجام میده برای دریافت اطلاعات ، معماری REST یک Resource identifier هست یعنی Resource ها توسط URL مشخص میشوند (همون EndPoint خودمون)و GraphQLشرکت متا ( فیس بوک قدیم ) برای رفع نواقص REST این معماری رو خلق کرد ، که یک سری از نواقص REST رو پوشش میده ولی یک مقدار از REST پیچیده تره و فیچرهای جدیدی داره که REST اون هارو نداره ، به طور مثال شما توی GraphQL میتونید مشخص کنید که چه بخشی از اطلاعات رو میخواید مثلا اگر قراره اطلاعات کاربران که شامل اسم کاربر یا سن کاربر یا . . . است برای شما توی Response برگرده ، شما میتونید مشخص کنید که من فقط الان اسم کاربر رو نیاز دارم و دیگه بقیه اطلاعات براتون ارسال نشه ، ولی خب ما توی رست هم میتونیم با استفاده از یک سری ترفند ها یک فیچر رو پیاده سازی کنیم.⭐ این مقاله صرفا برای آشنایی شما بود ، توی مقالات بعدی با هم یه REST API کوچیک مینویسیم و درموردش گپ میزنیم.?⭐ امیدوارم این مقاله براتون مفید بوده باشه ، اگر به نظرتون مطالب مفیدی داخلش گفته شده ممنون میشم با بقیه برنامه نویسان هم به اشتراک بذارید تا با هم این کامیونیتی رو ارتقا بدیم??❤راه های ارتباطی با من : ??ایمیل ---- گیت هاب