Pooya Rezaee
Pooya Rezaee
خواندن ۴ دقیقه·۹ ماه پیش

درک سریع و ساده request تا response با محوریت Restful API


این پست به درد کسی میخوره که تازه میخواد به دنیای api ورود کنه و مخصوصا Restful یاد بگیره هدف اینه سریع مفاهیم اولیه رو یاد بگیرین تا ادامه راه سردرگم نشین

برای اینکه بخام راجع به API صحبت کنم اول یکم عقب تر میریم مفاهیم ریشه ای تر رو درک کنیم بعد میریم سراغش اگه میدونین request تا response چجوری عمل میکنه گذر کنین و سروقت تایتل API بریم

به جایی که قراره درخواست بزنیم سرور میگن و به کسی که درخواست میزنه یعنی ما کلاینت میگن
کلاینت به آدرس مشخصی همراه با یک سری داده ها درخواست (request) میفرسته اینجا نقطه شروع اتصال میشه و سرور اون آدرس رو دریافت میکنه یک پردازشی انجام میده و درنهایت پاسخی(response) به کلاینت برمیگردونه بعد از انجام این روند ارتباط قطع میشه
این رویکردی هس که پروتکل HTTP/HTTPS طی میکنن

وقتی شما به یه صفحه وب مثل https://google.com درخواست میفرستین ریکوئست شما حاوی ادرس(URL) ارسالیتون به همراه یک سری header ها هست مثالی از یک هدر

GET /api/users/123 HTTP/1.1 Host: example.com Accept: application/json Authorization: Bearer Tokenrhueue7372uwyuwhJhs737 Content-Type: application/json

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

شاید درباره اینکه گفتم مسیر ما / هست کمی گیج شده باشین، یک مثال از آدرس کامل
https://blog.example.com/article/1?status=true
آدرس یا URL ما حاوی اطلاعات زیر هست

  • پروتکل ارتباطی : HTTPS
  • ساب دامین : blog
  • دامین : example.com
  • مسیر : article/1/
  • پارامتر ها : status=true



فعلا در همین حد که بدونین هر بخش چی هست کافیه احتمالا بعدا بهشون جزئی بپردازیم
حالا که عملکرد request تا response رو متوجه شدین میریم سراغ بخش بعد

API

بعضی وقتا به API میگن وب سرویس چون هدفش ارائه یک سرویس هست کاربردش به این صورت هست همین عملکرد request تا response رو داشته باشین اما قرار نیس به شما کد html برگرده بلکه نوعی دیتا برمیگرده قابل استفاده توی همه چیز باشه که معمولا اون دیتا بصورت json هست(کمی قدیم تر XML متداول بود)
یک نمونه داده جیسانی:

{ &quotname&quot: &quotJohn Doe&quot, &quotage&quot: 30, &quotemail&quot: &quotjohndoe@example.com&quot, &quotaddress&quot: { &quotstreet&quot: &quot123 Main St&quot, &quotcity&quot: &quotAnytown&quot, &quotcountry&quot: &quotUSA&quot }, &quotinterests&quot: [&quotcoding&quot, &quotreading&quot, &quothiking&quot] }

هرچیزی که میبینین انلاین شده از جمله برنامه های موبایل و دسکتاپ، بازی هایی حتی مثل pubg و خیلی از سایت ها بر بستر API دیتاشون رو بین اون چیز و سرورشون تبادل میکنن

انواع API ها داریم از جمله REST,GraphQL,SOAP که هرکدوم کاربرد و عملکرد متفاوت دارن ما اینجا Restful API رو بررسی میکنیم
وقتی میگیم API ما Restful هست یعنی از قوانین REST باید پیروی بکنیم که بصورت زیر هست

در Rest ما 4 دسته عملیات داریم که به اون کراد یا CRUD میگن

  • C -> Create
  • R -> Read
  • U -> Updae
  • D -> Delete



و متدای ریکوئست زدن متدوال به همراه عملکردشون به این صورت هستن

  • GET : وظیفه خواندن یا Read
  • POST : وظیفه ثبت رکورد جدید یا عملیات Create
  • PUT : وظیفه تغییر کامل یک رکورد یا Update
  • PATCH : وظیفه اپدیت بخشی از رکورد یا مجدد Update
  • DELETE : حذف یک رکورد یا همون Delete



این نکته رو هم بگم غیر GET توی بقیه حالت ها اکثر اوقات چیزی تحت عنوان body هم براشون ارسال میشه که اون هم معمولا بصورت json هست
برای مثال میخایم پست شماره 4 رو حذف کنیم
ریکوئست میزنیم به https://example.com/post/delete با متد DELETE
و به همراه این body :

{ post_id : 2 }


این وظیفه ها بصورت قرار دادی هس و اجبار به رعایتش نیس اما رعایت نکردنش کار خوبی نیس

بعد از زدن ریکوئستمون ریسپانسی که از سرور میگیریم حاوی اطلاعاتی هس مثل Header ای که استفاده کردیم و status code
استتیوس کد ها اعداد سه رقمی هستن که مشخص میکنن چه اتفاقی توی پردازش انجام شده
دسته 1XX مثل یک اطلاعیه هست
دسته 2XX به معنی موفق بودن عملیات
دسته 3XX نشون میده ما به صفحه دیگه انتقال پیدا کردیم یا باید بکنیم
دسته 4XX مشکل از سمت کاربر هست
دسته 5XX مشکل از سرور هست

معنی چند تا از مداول ترین ها
200 : با موفقیت انجام شد
201 : با موفقیت ایجاد شد
400 : کاربر اطلاعات را اشتباه ارسال کرده
401 : نیاز به احراز هویت هست
403 : دسترسی غیر مجاز

اگه از این دسته صحبت ها دوست دارین میتونین در کانال تلگرامم جوین بشین https://t.me/P_R_Tech

apirestrestfulhttp
یک گیک و عاشق تکنولوژی, بکند دولوپر پایتون و دانشجوی مهندسی کامپیوتر
شاید از این پست‌ها خوشتان بیاید