🚦 کدام متدهای HTTP همتوان (Idempotent) هستند؟
شناخت اینکه کدام متدهای HTTP ذاتاً همتوان (Idempotent) هستند، برای طراحی APIهای قوی و قابل اعتماد ضروری است. همتوانی یعنی تکرار عملیات، نتیجهای فراتر از اجرای اول نداشته باشد. 🛡
✅ متدهای HTTP که ذاتاً همتوان هستند:
چندین متد HTTP به طور ذاتی همتوان در نظر گرفته میشوند:
GET و HEAD: 🔍
این متدها برای بازیابی دادهها استفاده میشوند و هرگز وضعیت سرور را تغییر نمیدهند.
PUT: 🔄
این متد برای بهروزرسانی یا جایگزینی کامل یک منبع استفاده میشود. تکرار آن همیشه منجر به یک وضعیت نهایی یکسان برای منبع میشود.
DELETE: 🗑
برای حذف یک منبع استفاده میشود. نتیجه حذف یک منبع (حذف شده باشد یا خیر)، در تمام دفعات بعدی یکسان است (منبع وجود ندارد).
OPTIONS: ⚙️
این متد برای بازیابی اطلاعات مربوط به گزینههای ارتباطی موجود برای یک منبع است و هیچ تغییری در وضعیت سرور ایجاد نمیکند.
❌ متد POST و مسئله همتوانی
POST: ⚠️
متد POST ذاتاً همتوان نیست، زیرا به طور معمول برای ایجاد منابع جدید یا پردازش دادهها به روشی استفاده میشود که میتواند با هر درخواست تکرار شود.
درخواستهای مکرر POST معمولاً منجر به ایجاد چندین منبع تکراری یا راهاندازی چندین اقدام جداگانه میشوند. 💣
💡 راهحل: همتوانسازی POST با منطق سفارشی
خبر خوب این است که میتوانیم با استفاده از منطق سفارشی (Custom Logic)، همتوانی را برای متدهای POST پیادهسازی کنیم. 🔧
نکته: برای مثال، با بررسی وجود منبع قبل از ایجاد آن، میتوانیم اطمینان حاصل کنیم که درخواستهای مکرر POST منجر به اقدامات یا منابع تکراری نمیشوند و API ما همچنان قابل اعتماد باقی میماند.