صفر تا صد Api و انواع وبسرویس و متودها و کدهای وضعیت HTTP

صفر تا صد Api و انواع وبسرویس و متودها و کدهای وضعیت HTTP

فلسفه API

قبل از ظهور  API  نرم‌افزارها داده‌ها را از طریق فایل‌ها (مانند CSV، XML یا JSON اولیه) با یکدیگر به اشتراک می‌گذاشتند. مشکل این روش نیازمند پردازش دستی یا ابزارهای خاص برای خواندن و نوشتن فایل‌ها بود و به‌روزرسانی اطلاعات به صورت هم‌زمان مشکل بود.

در بعضی موارد سیستم‌ها داده‌ها را از طریق پوشه‌ها و فایل‌های اشتراکی در شبکه محلی انتقال می‌دادند. و یا برنامه‌ها مستقیماً به پایگاه داده یکدیگر متصل می‌شدند تا داده‌ها را بخوانند یا بنویسند.

Api چیست؟

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

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

این کار در برنامه‌های کاربردی توسط  APIها انجام می‌شود؛ زیرا آن‌ها هستند که امکان ارتباط را میان کاربران، دستگاه‌ها و برنامه‌ها ایجاد می‌کنند.

وب سرویس چیست؟

به ساده‌ترین بیان وب سرویس ابزاری است که به واسطه آن دو برنامه مختلف می‌توانند با هم حرف بزنند. این ابزار یک استاندارد برای انتقال و انتشار پیغام‌هایی است که بین برنامه‌های سمت مشتری و سرور(در بستر وب ، HTTP) رد و بدل می‌شود.

تفاوت Api و وب سرویس چیست؟ 

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

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

هر WEB SERVICE را می‌توان به نوعی یک Api در نظر گرفت. برای مثال با خرید سامانه پیامکی از یک وب سرویس برای ارائه خدمات خود استفاده می‌کنید. این وب سرویس امکان ارتباط بین نرم افزارهای مختلف برای ارسال پیامک را در اختیار شما قرار می‌دهد و بنابراین نقش API را نیز بازی می‌کند.

انواع وب سرویس

وب سرویس  SOAP

وب سرویس SOAP (Simple Object Access Protocol) یک پروتکل استاندارد برای تبادل اطلاعات بین سیستم‌ها بر روی شبکه است. برخلاف REST که سبک و معماری‌محور است، SOAP مبتنی بر یک پروتکل رسمی و ساختارمند است. در اینجا برخی از ویژگی‌های اصلی SOAP آورده شده است:

ساختار مبتنی بر XML :  SOAP از XML به عنوان قالب پیام‌ها استفاده می‌کند. این قالب ساختاریافته باعث می‌شود که پیام‌ها قابل خواندن و پردازش توسط ماشین باشند.

سخت‌گیری و استانداردها:  SOAP برای عملیات پیچیده با نیازهای خاص (مانند تراکنش‌ها و امنیت بالا) مناسب‌تر است، زیرا استانداردهای گسترده‌تری مانند WS-Security را پشتیبانی می‌کند.

SOAP برای سیستم‌های بزرگ سازمانی که به امنیت، انتقال قابل اعتماد و سازگاری بالا نیاز دارند، مناسب‌تر است.

 

نمونه SOAP

<?xml version="1.0"?> 
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:cal="http://www.google.com/"> 
<soapenv:Header/> 
<soapenv:Body> 
   <cal:easter_date soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
   <year xsi:type="xsd:short">2014</year> 
</cal:easter_date> 
</soapenv:Body> 
</soapenv:Envelope>
 
 

وب سرویس  REST

وب سرویس REST (Representational State Transfer) یک معماری نرم‌افزاری برای طراحی و پیاده‌سازی سرویس‌های وب است که به شکلی سبک و ساده طراحی شده است. این معماری بر اساس اصول زیر کار می‌کند:

منابع (Resources)  : در REST، هر چیزی که قابل دسترسی باشد (مانند داده‌ها یا اشیاء) به عنوان منبع شناخته می‌شود. این منابع معمولاً با URL شناسایی می‌شوند.

بدون وضعیت (Stateless) : هر درخواست مستقل از دیگر درخواست‌ها است و سرور اطلاعاتی درباره حالت کلاینت نگه نمی‌دارد.

قابلیت کش (Cacheability) : پاسخ‌ها قابلیت کش شدن دارند تا به کاهش بار روی سرور کمک کنند.

استفاده از REST در توسعه برنامه‌ها مزایایی مانند سادگی، کارایی و انعطاف‌پذیری را فراهم می‌کند.

 نمونه REST

[
  {
    "userId": 1,
    "id": 1,
    "title": "shop one",
    "body": "description shop one"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "shop two",
    "body": "description shop two"
  }
]
 
 

 

GraphQL  چیست؟


گراف کیوال (GraphQL) یک استاندارد مبتنی بر کلاینت و زبان برنامه نویسی کوئری است که از طریق آن می‌توانید درخواست کلاینت را با ارسال یک کوئری به API پاسخ داده و آن چیزی که موردنیاز کاربر می‌باشد را بفرستید. در صورت تسلط بر REST APIها، از گراف کیوال برای توسعه در این محیط میتوانید استفاده کنید . GraphQL یک نقطه انتهایی منفرد در اختیار ما قرار می‌دهد و دیگر نیازی به نسخه 2 یا نسخه 3 برای API یکسان (مانند REST) وجود ندارد.

 

gRPC API

gRPC یک چارچوب مدرن برای ساخت APIهای سریع، مقیاس‌پذیر و بین پلتفرمی است که توسط گوگل توسعه داده شده است. این پروتکل از HTTP/2 برای ارتباطات کارآمد استفاده می‌کند و داده‌ها را به صورت باینری با فرمت Protocol Buffers (Protobuf) تبادل می‌کند، که بسیار سریع‌تر و کم‌حجم‌تر از JSON یا XML است. gRPC از فراخوانی روش‌های از راه دور (Remote Procedure Calls - RPC) پشتیبانی می‌کند و به کلاینت‌ها اجازه می‌دهد مستقیماً متدهای تعریف‌شده در سرور را اجرا کنند. ویژگی‌های اصلی آن شامل ارتباط دوجهته (Bidirectional Streaming)، کارایی بالا، و پشتیبانی چند زبانه است. پشتیبانی از ارتباطات بلادرنگ (realtime) را دارد.

این پروتکل برای سیستم‌های توزیع‌شده (مانند میکروسرویس‌ها) و محیط‌هایی که نیاز به عملکرد بالا دارند، بسیار مناسب است. یک نقطه ضعف gRPC، پیچیدگی بیشتر در مقایسه با REST و ناسازگاری نسبی آن با مرورگرهای وب است.

 

 WebSocket API

 WebSocket API یک پروتکل ارتباطی پیشرفته است که ارتباط دوجهته (bidirectional) و

 بلادرنگ (real-time) بین کلاینت و سرور را فراهم می‌کند. برخلاف HTTP که ارتباط پس از هر درخواست بسته می‌شود، WebSocket یک اتصال پایدار و مداوم ایجاد می‌کند. این API برای کاربردهایی مانند چت آنلاین، بازی‌های چندنفره، و به‌روزرسانی‌های زنده داده‌ها (مانند قیمت سهام) مناسب است.

این پروتکل سبک، سریع و کارآمد است و با کاهش سربار درخواست‌های مکرر HTTP عملکرد بهتری ارائه می‌دهد. پیام‌ها در WebSocket می‌توانند به صورت متن یا باینری ارسال شوند.
یکی از مزیت‌های کلیدی WebSocket، کاهش تأخیر و مصرف پهنای باند است.
با این حال، مدیریت پیچیدگی و امنیت این پروتکل نیازمند دقت بیشتری است.

معماری

سادگی

امنیت

انعطاف‌پذیری

کارایی

موارد استفاده

RESTful

ساده

متوسط

بالا

متوسط

وب و موبایل

SOAP

پیچیده

بسیار بالا

متوسط

پایین

بانکی و دولتی

GraphQL

متوسط

بالا

بسیار بالا

بالا

داده‌های پیچیده

gRPC

پیچیده

بالا

بالا

بسیار بالا

میکروسرویس‌ها

WebSocket

متوسط

متوسط

بالا

بالا

بلادرنگ

 

ابزارهای کار با  API

Postman چیست؟

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

https://www.postman.com/

Soapui
SoapUI یک ابزار قدرتمند و پرکاربرد برای آزمایش API ها (Application Programming Interfaces) است. این نرم‌افزار که به صورت متن‌باز ارائه می‌شود، به توسعه‌دهندگان و تست‌کنندگان اجازه می‌دهد تا به‌سادگی وب‌سرویس‌های  REST،  SOAP را آزمایش کنند.

https://www.soapui.org/

Swagger

Swagger یک ابزار متن‌باز برای مستندسازی، مدیریت و بهینه‌سازی  API‌ها است که به توسعه‌دهندگان اجازه می‌دهد مستندات جامع و دقیقی از  API‌های خود تهیه کنند.

https://swagger.io/

 

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

ارتباط بین API و دیتابیس معمولاً از طریق مراحل زیر انجام می‌شود:

دریافت درخواست از کلاینت

کلاینت (مانند مرورگر وب یا برنامه موبایل) درخواست خود را از طریق HTTP به API ارسال می‌کند. این درخواست می‌تواند شامل اطلاعاتی مانند نوع عملیات  GET، POST، PUT، DELETE و پارامترهای ورودی باشد.

 

پردازش درخواست در      API

API    درخواست را دریافت و پارامترها را تجزیه می‌کند. بر اساس نوع عملیات، منطق مربوطه Business  Logic   اجرا می‌شود.  API  داده‌ها را از کلاینت دریافت کرده و آن‌ها را آماده ارسال به دیتابیس می‌کند.

 

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

 API  از یک زبان یا فریمورک مانند SQL،  ORM (Object Relational Mapping) یا کتابخانه‌های اتصال به دیتابیس برای ارسال دستورات به دیتابیس استفاده می‌کند.

 

به عنوان مثال:

در زبان SQLAPI  دستورات مستقیم مانند SELECT, INSERT, UPDATE, DELETE ارسال می‌کند.

در ORM : API  از مدل‌های تعریف‌شده برای مدیریت داده‌ها استفاده می‌کند.

 

دریافت پاسخ از دیتابیس

دیتابیس داده‌های درخواست‌شده را برمی‌گرداند یا نتیجه عملیات (مانند موفقیت یا خطا) را گزارش می‌کند. این پاسخ معمولاً شامل کدهای وضعیت (status codes) و داده‌های مربوطه است.

 

ارسال پاسخ به کلاینت

API پاسخ دریافت‌شده از دیتابیس را پردازش و به فرمت مورد نیاز مانند JSON یا XML تبدیل می‌کند.

پاسخ نهایی به کلاینت ارسال می‌شود.

انواع متود های متداول در HTTP

متد  POST

متد POST برای ساختن یک منبع جدید در مجموعه مورد استفاده قرار می‌گیرد. به بیان ساده‌تر ایجاد یک رکورد جدید توسط این متد انجام می‌شود

مزایا و معایب استفاده از متد POST عبارتند از:

  • امنیت این روش ارسال اطلاعات بسیار بالا است و اطلاعاتی که کاربر تایپ می‌کند به هیچ عنوان در مرورگر قابل مشاهده نیست، علاوه بر آن، در گزارشات (Logs) سرور هم ذخیره نمی‌شوند.
  • از آن‌جایی که اطلاعات ارسال شده‌ی صفحه با متد POST در URL دیده نمی‌شوند، نمی‌توان آن صفحه را در مرورگر Bookmark کرد.
  • در متد POST محدودیت بسیار بیشتری برای ارسال اطلاعات وجود دارد. به کمک POST می‌توان داده‌های متنی و باینری (آپلود فایل) را ارسال کرد.
  • هرگز در history مرورگر ذخیره نمیشه.
  • به هیچ وجه قابل cache شدن هم نیست.
  • امنیت دیتای ارسالی در درخواست نسبتا بالاست (به قول بچه های تست نفوذ و امنیت no system is safe ) و بازه انواع درخواست های ارسالی شامل :

· رشته ها (داده های متنی)

· داده های باینری (آپلود فایل)

 

متد  GET

این متد برای خواندن اطلاعات یک منبع ( نه تغییر آنها) بکار گرفته می‌شود. گاهی این متد برای بازگردانی اطلاعاتی به فرمت XML یا JSON نیز کاربرد دارد.

مزایا و معایب استفاده از متد GET عبارتند از:

  • از آن‌جایی که اطلاعات فرستاده شده با متد GET در URL آدرس صفحه نمایش داده می‌شوند، می‌توانید صفحه را با مقادیر query string مورد نظر خود بوک مارک (Bookmark) کنید.
  • متد GET مناسب ارسال اطلاعات حساس و مهمی مثل نام کاربری، رمز عبور، اطلاعات کارت بانکی و… نیست، زیرا اطلاعات به طور کامل در query string آدرس صفحه قابل مشاهده است و اینکه در حافظه مرورگر کاربر به عنوان یک صفحه بازدید شده ذخیره می‌شود.
  • متد GET دیتا را در یک متغیر داخل محیط سرور ذخیره می‌کند؛ به همین دلیل  دارای محدودیت طول میباشد یعنی مقادیر بسیاری را نمیتوان در هر request ارسال کرد (max length = 2048 chars in url).

متد  PUT

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

متد  PATCH

این متد روشی دیگر برای آپدیت و بروزرسانی رکوردها می‌باشد با این تفاوت که پس از ارسال درخواست، تنها فیلدهایی که دارای مقادیر هستند تغییر می‌کنند و سایر فیلدها به قوت خود باقی می‌مانند. مثلا فرض کنید یک رکورد با نام کاربری و ایمیل در پایگاه داده‌ی خود ذخیره کرده‌اید و حال قصد بروزرسانی آن با متد PATCH را دارید. اگر فیلد نام کاربری را پر کنید و ایمیل را خالی بگذارید و سپس درخواست را ارسال کنید، تنها مقدار فیلد نام کاربری در پایگاه داده تغییر می‌کند و مقدار فیلد ایمیل تغییر نخواهد کرد.

متد  DELETE

ساده‌ترین متد پروتکل HTTP، متد DELETE می‌باشد که با ارسال این درخواست درکورد موردنظر برای همیشه از پایگاه داده حذف خواهد شد.

متد  HEAD

متد HTTP HEAD مشابه متد GET است، اما فقط هدرهای پاسخ را برمی‌گرداند و بدنه‌ی پاسخ ارسال نمی‌شود. این متد برای بررسی وضعیت منابع، مانند وجود یا تغییرات آن‌ها، بدون دانلود کامل محتوا استفاده می‌شود. HEAD سریع‌تر از GET است، زیرا حجم داده‌های انتقالی کمتر است. از این متد در کاربردهایی مانند بررسی Last-Modified یا اندازه‌ی فایل استفاده می‌شود. همچنین می‌تواند برای تست دسترسی یا احراز هویت بدون دریافت داده به کار رود.

 

متد  OPTIONS

متد HTTP OPTIONS برای تعیین قابلیت‌ها و متدهای پشتیبانی‌شده توسط سرور برای یک منبع خاص استفاده می‌شود. این متد به کلاینت اجازه می‌دهد بدون اجرای عملیاتی خاص، اطلاعاتی درباره‌ی متدهای مجاز (مانند GET، POST ) یا هدرهای قابل استفاده به دست آورد. به‌عنوان نمونه، در پاسخ سرور ممکن است هدر Allow: GET, POST, OPTIONS ارسال شود. این متد همچنین برای تنظیم ارتباطات CORS (Cross-Origin Resource Sharing) به کار می‌رود. OPTIONS ابزاری مفید برای بررسی امکانات سرور پیش از ارسال درخواست واقعی است.

 

متد  CONNECT

متد HTTP CONNECT برای ایجاد یک تونل ارتباطی بین کلاینت و سرور استفاده می‌شود. این متد معمولاً در پروتکل‌های رمزنگاری شده مانند HTTPS به کار می‌رود تا یک ارتباط امن از طریق یک پراکسی سرور برقرار کند.کلاینت با ارسال CONNECT به پراکسی، درخواست می‌کند که اتصال مستقیم با سرور مقصد ایجاد شود. پاسخ پراکسی با کد وضعیت 200 (Connection Established) نشان‌دهنده موفقیت‌آمیز بودن تونل است. این متد بیشتر در مرورگرها و ابزارهای شبکه برای مدیریت ارتباطات امن مورد استفاده قرار می‌گیرد.

متد

عملکرد

بدون اثرگذاری (Idempotent)

ایجاد تغییر

GET

دریافت داده

بله

خیر

POST

ایجاد منبع جدید

خیر

بله

PUT

به‌روزرسانی یا ایجاد منبع

بله

بله

PATCH

به‌روزرسانی جزئی منبع

خیر

بله

DELETE

حذف منبع

بله

بله

HEAD

دریافت متادیتا

بله

خیر

OPTIONS

بررسی متدهای پشتیبانی‌شده

بله

خیر

CONNECT

ایجاد تونل

خیر

بله

ارتباط متدهای API با دیتابیس

ارتباط متدهای API با دیتابیس بر اساس نوع عملیاتی که توسط کلاینت درخواست می‌شود و همچنین ماهیت داده‌های ذخیره‌شده در دیتابیس تنظیم می‌شود.

 

متد GET

عملکرد: برای خواندن داده‌ها از دیتابیس استفاده می‌شود. معادل عملیات SELECT  در دیتابیس‌های SQL.

نمونه ارتباط:  API یک درخواست دریافت می‌کند مانند(/users/1) . یک کوئری به دیتابیس ارسال می‌شود تا داده مربوط به شناسه کاربر 1 را بازیابی کند.

 

متد POST

عملکرد: برای ایجاد داده جدید در دیتابیس استفاده می‌شود. معادل عملیات INSERT  در دیتابیس‌های SQL.

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

 

 

متد PUT

عملکرد: برای به‌روزرسانی کامل یک رکورد استفاده می‌شود. معادل عملیات UPDATE در دیتابیس‌های SQL.

نمونه ارتباط: API داده‌های به‌روزرسانی‌شده را دریافت می‌کند. کوئری به دیتابیس ارسال می‌شود تا رکورد موجود به‌طور کامل جایگزین شود. دیتابیس نتیجه به‌روزرسانی را بازمی‌گرداند.

 

متد PATCH

عملکرد: برای به‌روزرسانی جزئی یک رکورد استفاده می‌شود. معادل عملیات(UPDATE  با تغییرات جزئی) در دیتابیس‌های SQL.

نمونه ارتباط: API فقط داده‌هایی که نیاز به تغییر دارند را دریافت می‌کند. کوئری به دیتابیس ارسال می‌شود تا تنها فیلدهای مشخص‌شده به‌روزرسانی شوند. دیتابیس نتیجه عملیات را بازمی‌گرداند.

 

متد DELETE

عملکرد: برای حذف داده‌ها از دیتابیس استفاده می‌شود. معادل عملیات DELETE در دیتابیس‌های SQL.

نمونه ارتباط: API یک درخواست حذف مانند (/users/1) دریافت می‌کند. یک کوئری به دیتابیس ارسال می‌شود تا رکورد مشخص‌شده حذف شود. دیتابیس نتیجه عملیات حذف را بازمی‌گرداند.

 

ارتباط متدها با عملیات CRUD

عملیات (CRUD) ایجاد، خواندن، به‌روزرسانی و حذف معادل‌های زیر را در متدهای API دارند:

متد API

عملیات دیتابیس (SQL)

هدف

GET

SELECT

دریافت داده‌ها از دیتابیس

POST

INSERT

ایجاد داده جدید در دیتابیس

PUT

UPDATE

به‌روزرسانی کامل رکوردها

PATCH

UPDATE

به‌روزرسانی جزئی رکوردها

DELETE

DELETE

حذف داده‌ها از دیتابیس

 

JSON چیست؟

JSON (JavaScript Object Notation) یک فرمت استاندارد برای تبادل داده است که از متن ساده استفاده می‌کند. این فرمت برای ذخیره‌سازی و ارسال داده‌ها بین سرور و کلاینت کاربرد دارد. JSON بر اساس جفت‌های کلید-مقدار و آرایه‌ها سازماندهی می‌شود. این فرمت خوانا برای انسان است و در بسیاری از زبان‌های برنامه‌نویسی پشتیبانی می‌شود. JSON شامل انواع داده‌ای مانند رشته‌ها، اعداد، بولین‌ها، آرایه‌ها، اشیاء و null است. معمولاً در APIها، پیکربندی‌ها و ذخیره‌سازی داده‌ها استفاده می‌شود. مزیت اصلی JSON سادگی و حجم کم آن است.

{
    "store": {
        "name": "TechShop",
        "location": "Downtown",
        "categories": [
            "Electronics",
            "Books",
            "Accessories"
        ],
        "products": [
            {
                "id": 101,
                "name": "Smartphone",
                "price": 699.99,
                "available": true
            },
            {
                "id": 102,
                "name": "Headphones",
                "price": 149.99,
                "available": false
            }
        ]
    }
}

 

XML چیست؟

XML (eXtensible Markup Language) یک زبان نشانه‌گذاری است که برای ذخیره و تبادل داده‌ها به صورت ساختاریافته و مستقل از پلتفرم طراحی شده است. این زبان از تگ‌های سفارشی استفاده می‌کند و داده‌ها را به شکل سلسله‌مراتبی سازمان‌دهی می‌کند. XML برای انتقال داده‌ها بین سیستم‌ها و زبان‌های مختلف و همچنین ذخیره پیکربندی‌ها استفاده می‌شود. به دلیل خوانایی بالا برای انسان و ماشین، در بسیاری از سیستم‌های قدیمی و پروتکل‌های وب (مانند SOAP) به کار می‌رود. با این حال، در مقایسه با فرمت‌هایی مانند JSON، حجیم‌تر و کمتر بهینه است.

 

<?xml version="1.0"?> 
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:cal="http://www.google.com/"> 
<soapenv:Header/> 
<soapenv:Body> 
   <cal:easter_date soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
   <year xsi:type="xsd:short">2014</year> 
</cal:easter_date> 
</soapenv:Body> 
</soapenv:Envelope>
 

Request  چیست

 

در دنیای برنامه‌نویسی و شبکه، Request به معنی درخواست است و به درخواست‌هایی که از یک کلاینت (مانند مرورگر وب یا اپلیکیشن) به سرور ارسال می‌شود، اشاره دارد. این درخواست‌ها معمولاً به منظور دریافت اطلاعات یا انجام عملیاتی خاص از سرور ارسال می‌شوند.

ساختار HTTP Request: یک درخواست HTTP معمولاً شامل اجزای زیر است:

 URL: آدرس هدف که درخواست به آن ارسال می‌شود.

روش (Method) :  نوع عملیات GET، POST،  PUT و غیره.

هدرها (Headers): اطلاعات اضافی در مورد درخواست، مانند نوع محتوا (Content-Type) یا اطلاعات احراز هویت.

بدنه (Body): داده‌هایی که در برخی از درخواست‌ها ارسال می‌شوند، مانند داده‌های فرم یا اطلاعات JSON.

کدهای وضعیت HTTP

کدهای وضعیت HTTP چگونه طبقه بندی شده‌اند؟

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

1xx– اطلاعاتی: سرور درخواست را دریافت کرده و در حال پردازش است.

2xx– موفقیت آمیز: درخواست موفقیت آمیز بوده و مرورگر اطلاعات مدنظر را دریافت کرده است.

3xx– ریدایرکشن: شما ریدایرکت شده‌اید و تکمیل درخواستتان به فعالیت بیشتری نیاز دارد.

4xx– خطای کاربر: وب سایت یا پیج مدنظر قابل دسترسی نیست. یا پیج در دسترس نبوده یا اینکه درخواست حاوی سینتکس نامناسب است.

5xx– خطای سرور: با اینکه درخواست، معتبر به نظر می‌رسد ولی سرور نمی‌تواند آن را تکمیل کند.

مدیریت خطاهای HTTP

هندل کردن خطاهای HTTP یکی از بخش‌های ضروری توسعه وب است که به توسعه‌دهندگان این امکان را می‌دهد تا در صورت وقوع مشکلات مختلف، به‌طور مناسب پاسخ دهند و تجربه کاربری بهتری فراهم کنند. در HTTP، کدهای وضعیت (Status Codes) به طور مستقیم با خطاها در ارتباط هستند و برای مدیریت و هندل کردن خطاها استفاده می‌شوند.

 

کدهای وضعیت HTTP به دسته‌های مختلف تقسیم می‌شوند. برای هندل کردن خطاها، بیشتر با کدهای وضعیت از گروه 4XX  و5XX  سروکار داریم:

کدهای وضعیت (4XX)خطاهای مربوط به درخواست کلاینت:

این کدها نشان‌دهنده این است که درخواست ارسال شده توسط کلاینت مشکل دارد یا اشتباهی در آن وجود دارد.

400 Bad Request: درخواست اشتباه یا ناقص است.

خطای 400 Bad Request به معنای ارسال درخواست نامعتبر یا ناقص به سرور است. برای رفع آن، ساختار درخواست (URL، پارامترها، یا Body) را بررسی کرده و از صحت داده‌های ارسال‌شده اطمینان حاصل کنید.

 

401 Unauthorized: کاربر نیاز به احراز هویت دارد.

خطای 401 Unauthorized زمانی رخ می‌دهد که احراز هویت معتبر انجام نشده باشد. برای رفع آن، مطمئن شوید توکن یا اطلاعات ورود در هدر درخواست (Authorization) به‌درستی تنظیم شده و کاربر مجوز دسترسی دارد.

 

403 Forbidden: کاربر مجاز به دسترسی به منبع نیست.

خطای 403 Forbidden زمانی رخ می‌دهد که سرور درخواست را دریافت می‌کند اما کلاینت اجازه دسترسی به منبع را ندارد. برای رفع آن، سطح دسترسی کاربر را بررسی کنید و مطمئن شوید که توکن یا اعتبارنامه‌های احراز هویت شامل مجوزهای کافی برای منبع موردنظر هستند.

 

404 Not Found: منبع درخواست‌شده پیدا نشد.

خطای 404 Not Found زمانی رخ می‌دهد که منبع درخواست‌شده در سرور یافت نمی‌شود. برای رفع آن، URL و مسیر درخواست را بررسی کنید و اطمینان حاصل کنید که منبع موردنظر در سرور وجود دارد یا به درستی تنظیم شده است.

 

405 Method Not Allowed: متد HTTP ارسال‌شده پشتیبانی نمی‌شود.

خطای 405 Method Not Allowed زمانی رخ می‌دهد که متد درخواست (مانند GET، POST، PUT) برای منبع مشخص‌شده مجاز نیست. برای رفع آن، اطمینان حاصل کنید که متد صحیح برای منبع موردنظر استفاده شده و سرور از آن متد پشتیبانی می‌کند.

 

 

کدهای وضعیت (5XX)خطاهای مربوط به سرور:

این کدها نشان‌دهنده خطاهایی هستند که در سرور رخ داده‌اند.

500 Internal Server Error: یک خطای داخلی در سرور رخ داده است.

خطای 500 Internal Server Error به معنای وجود مشکلی در سرور است که باعث نمی‌شود درخواست به درستی پردازش شود. برای رفع آن، لاگ‌های سرور را بررسی کنید تا علت دقیق خطا مشخص شود و از عملکرد صحیح سرور و کدهای آن اطمینان حاصل کنید.

 

502 Bad Gateway: سرور به عنوان دروازه یا پروکسی مشکل دارد.

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

 

503 Service Unavailable: سرویس در دسترس نیست.

خطای 503 Service Unavailable نشان‌دهنده این است که سرور موقتا قادر به پردازش درخواست‌ها نیست. برای رفع آن، وضعیت سرور و منابع آن را بررسی کرده و مطمئن شوید که سرور در حال اجرا است و بار زیادی ندارد یا ممکن است نیاز به مقیاس‌بندی مجدد باشد.

 

504 Gateway Timeout: زمان انتظار برای درخواست بیش از حد طولانی بوده است.

خطای 504 Gateway Timeout زمانی رخ می‌دهد که سرور به عنوان دروازه یا پراکسی نتواند به سرور اصلی پاسخ دهد. برای رفع آن، ارتباطات شبکه‌ای بین سرورها را بررسی کنید و از صحت تنظیمات تایم‌اوت و پیکربندی پروکسی اطمینان حاصل کنید.

 

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

https://nextadmin.net/http-request-methods/

https://jsonplaceholder.typicode.com/

 

نویسنده :
مجید پورداود
  • مجید پورداود
  • مهندس نرم افزار و تحلیلگر ارشد سیستم های کامپیوتری تحت وب می باشم. از سال 1395 برنامه نویسی را شروع کردم و به زبان های php (فریم ورک laravel -codeigniter)  و زبان جاوا اسکریپت (فریم ورک express.js-nest.js)  تسلط دارم.  

ثبت دیدگاه جدید

0 دیدگاه

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