PUT, PATCH ve POST arasındaki fark nedir? Hangisini ne zaman kullanırsınız?

Cevap

  • POST: yeni kaynak oluşturur veya bir işlem tetikler. Sunucu kaynağın URI'sini belirler. Idempotent değildir.
  • PUT: kaynağı belirtilen URI'de tamamen değiştirir (yoksa oluşturabilir). Gönderilmeyen alanlar silinir/varsayılana döner. Idempotent'tir.
  • PATCH: kaynağın yalnızca belirtilen alanlarını günceller. Standart olarak idempotent olması garanti değildir.
POST  /users            {"name":"Ali","email":"a@x.com"}  -> 201 Created, Location: /users/42
PUT   /users/42         {"name":"Ali","email":"yeni@x.com","phone":null}  -> tüm kaynak
PATCH /users/42         {"email":"yeni@x.com"}            -> sadece email

PATCH formatları

  • JSON Merge Patch (RFC 7396, application/merge-patch+json): gönderilen alanlar güncellenir, null alanı siler. Basit ve yaygın.
  • JSON Patch (RFC 6902, application/json-patch+json): işlem listesi.
[
  { "op": "replace", "path": "/email", "value": "yeni@x.com" },
  { "op": "add", "path": "/tags/-", "value": "vip" }
]

add ile dizinin sonuna eleman eklemek gibi işlemler PATCH'in neden idempotent olmayabileceğini gösterir.

Pratik tavsiyeler

  • Alan ekleme sık olan API'lerde PUT, eski istemcilerin bilmediği alanları sıfırlayabilir; kısmi güncellemeler için PATCH daha güvenlidir.
  • Eşzamanlı güncellemelerde kayıp yazmaları önlemek için ETag + If-Match başlığı ile optimistic concurrency kullanın; uyuşmazlıkta 412 Precondition Failed dönün.
  • "Siparişi iptal et" gibi durum geçişleri için POST /orders/42/cancel gibi bir eylem endpoint'i, PATCH ile status alanını değiştirmekten genelde daha açıktır.
  1. HTTP 401 ile 403 durum kodları arasındaki fark nedir?KolayAPI TasarımıBackend
  2. JWT nedir? Session tabanlı kimlik doğrulamadan farkı nedir?OrtaAPI TasarımıBackend
  3. Idempotency nedir? Hangi HTTP metotları idempotent'tir?OrtaAPI TasarımıBackend
  4. OAuth 2.0 nedir? Authorization Code (PKCE) ve Client Credentials akışları nasıl çalışır?ZorAPI TasarımıBackend
  5. Rate limiting nedir? Token bucket ve sliding window algoritmalarını açıklayın.ZorAPI TasarımıBackend
  6. gRPC nedir? REST'ten farkı nedir ve ne zaman tercih edilir?OrtaAPI TasarımıBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle