HTTP Verbs (Methods) تعیین میکنند که یک Client روی یک Resource چه عملیاتی انجام میدهد.
این متدها بخش اصلی طراحی REST API هستند و رفتار سیستم را از نظر Create / Read / Update / Delete (CRUD) مشخص میکنند.
دریافت داده از سرور بدون تغییر در state سیستم.
Safe (تغییری در دیتا ایجاد نمیکند)
Idempotent (چند بار اجرا → نتیجه یکسان)
قابل Cache
GET /customers/123
ایجاد یک Resource جدید یا اجرای یک عملیات غیر-idempotent.
غیر Idempotent
معمولاً باعث ایجاد رکورد جدید
قابل Cache نیست
POST /customers
آپدیت کامل یک Resource یا جایگزینی کامل آن.
Idempotent
اگر چند بار ارسال شود → نتیجه یکسان
کل resource جایگزین میشود
PUT /customers/123
آپدیت جزئی یک Resource.
معمولاً Partial Update
ممکن است idempotent باشد (بسته به طراحی)
فقط بخشی از داده تغییر میکند
PATCH /customers/123
حذف یک Resource.
Idempotent
چند بار حذف → نتیجه نهایی یکسان (resource حذف شده)
DELETE /customers/123
مشابه GET ولی بدون Body Response.
فقط Headers برمیگردد
برای بررسی وجود resource یا metadata
مناسب برای performance optimization
HEAD /customers/123
مشخص کردن capabilityهای یک endpoint.
برمیگرداند:
Allowed Methods
CORS policy
برای preflight request در browser استفاده میشود
OPTIONS /customers

Safe → تغییر در data ندارد (GET, HEAD)
Idempotent → چند بار اجرا نتیجه یکسان دارد (GET, PUT, DELETE)
استفاده از GET برای عملیات تغییر دیتا ❌
استفاده از POST برای update بدون دلیل ❌
عدم رعایت idempotency در PUT ❌
GET → 200
POST → 201 Created
PUT → 200 / 204
PATCH → 200 / 204
DELETE → 204 No Content
OPTIONS → 200
HEAD → 200 (بدون body)
آیا method درست انتخاب شده؟
آیا idempotency رعایت شده؟
آیا GET باعث تغییر state نشده؟
آیا DELETE دوبار اجرا شود رفتار درست دارد؟
آیا PATCH partial update درست انجام میدهد؟
آیا OPTIONS درست CORS را برمیگرداند؟
آیا HEAD همان resource را بدون body پاسخ میدهد؟
GET برای caching و performance
POST برای command-based actions
PUT برای deterministic replacement
PATCH برای partial mutation
DELETE برای state removal
HTTP Methods REST Verb CRUD Safe Method Idempotent GET POST PUT PATCH DELETE HEAD OPTIONS Cacheable Resource State Change API Design CORS Preflight Request
HTTP Verbs (متدهای تعیینکننده نوع عملیات روی Resource): برای تعریف رفتار API در معماری REST استفاده میشوند.
GET (دریافت داده بدون تغییر state): برای خواندن اطلاعات و caching استفاده میشود و Safe و Idempotent است.
POST (ایجاد Resource یا اجرای عملیات): برای ساخت داده جدید استفاده میشود و معمولاً Idempotent نیست.
PUT (جایگزینی کامل Resource): برای آپدیت کامل استفاده میشود و Idempotent است.
PATCH (آپدیت جزئی Resource): برای تغییر بخشی از داده استفاده میشود و معمولاً Partial Update محسوب میشود.
DELETE (حذف Resource): برای حذف داده استفاده میشود و Idempotent است.
HEAD (دریافت فقط Header): برای بررسی وجود Resource بدون دریافت Body استفاده میشود.
OPTIONS (بررسی قابلیتهای API): برای CORS و دریافت Allowed Methods استفاده میشود.
#APITesting
#HTTPMethods
#RESTAPI
#BackendTesting
#APIDesign