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 emailPATCH formatları
- JSON Merge Patch (RFC 7396,
application/merge-patch+json): gönderilen alanlar güncellenir,nullalanı 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-Matchbaşlığı ile optimistic concurrency kullanın; uyuşmazlıkta412 Precondition Faileddönün. - "Siparişi iptal et" gibi durum geçişleri için
POST /orders/42/cancelgibi bir eylem endpoint'i, PATCH ilestatusalanını değiştirmekten genelde daha açıktır.
İlgili API Tasarımı soruları
- HTTP 401 ile 403 durum kodları arasındaki fark nedir?
- JWT nedir? Session tabanlı kimlik doğrulamadan farkı nedir?
- Idempotency nedir? Hangi HTTP metotları idempotent'tir?
- OAuth 2.0 nedir? Authorization Code (PKCE) ve Client Credentials akışları nasıl çalışır?
- Rate limiting nedir? Token bucket ve sliding window algoritmalarını açıklayın.
- gRPC nedir? REST'ten farkı nedir ve ne zaman tercih edilir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.