REST API tasarımında kaynak (resource) isimlendirme ve URL yapısı nasıl olmalıdır?
Cevap
REST'te URL kaynağı (isim) belirtir, yapılacak işlemi ise HTTP metodu belirtir.
Temel kurallar
- İsim kullanın, fiil kullanmayın:
/users,/getUsersdeğil. - Koleksiyonlar için çoğul:
/orders,/orders/42. - İlişkiler için hiyerarşi:
/users/42/orders. İki seviyeden derine inmekten kaçının. - Küçük harf ve tire:
/order-items(kebab-case). - Filtre, sıralama ve sayfalama query string'de:
/orders?status=paid&sort=-created_at&limit=20. - Sonda
/ve dosya uzantısı (.json) yok; formatAcceptbaşlığıyla belirlenir.
Metot ve URL eşleşmesi
| İşlem | Metot ve URL | Başarılı yanıt |
|---|---|---|
| Listele | GET /orders | 200 |
| Getir | GET /orders/42 | 200 / 404 |
| Oluştur | POST /orders | 201 + Location başlığı |
| Tamamen değiştir | PUT /orders/42 | 200 / 204 |
| Kısmi güncelle | PATCH /orders/42 | 200 |
| Sil | DELETE /orders/42 | 204 |
CRUD'a uymayan işlemler
Durum değişikliğini alt kaynak olarak modelleyin:
POST /orders/42/cancellation
POST /orders/42/refundsBu mümkün değilse pragmatik bir aksiyon ucu kabul edilebilir (POST /orders/42/cancel), ama tutarlı olun.
Tutarlılık
Hata yanıtları için tek bir format (ör. RFC 9457 Problem Details: type, title, status, detail), JSON alanlarında tek bir isimlendirme stili (camelCase veya snake_case) ve tarihler için ISO 8601 kullanın.
İ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.