Saklanan kredi kartlarını kullanarak sipariş vermek de dahil olmak üzere bir dizi kullanıcı etkileşimini işleyecek bir RESTful API oluşturuyorum.
Başarılı bir sipariş durumunda 200 OK iade ediyorum ve sipariş talebinin hatalı biçimlendirilmesi veya geçersiz olması durumunda 400 Hatalı İsteği iade ediyorum. Ancak siparişin fiili işlenmesi sırasında bir sorun olursa ne iade etmeliyim?
- İstemci POSTS bir kullanıcı kaynağı için sunucuya sipariş. Kullanıcı yoksa, 404 Bulunamadı döndürülür.
- Sipariş formatı ve bilgiler doğrulanır. Geçerli değilse, 400 Hatalı İstek döndürülür.
- Sipariş işlendi. Sipariş başarılı olursa sipariş için 201 Oluşturuldu iade edilir. Beklenmeyen bir hatayla karşılaşılırsa, 500 Sunucu Hatası döndürülür.
Son adım sorun - sipariş başka bir nedenden ötürü tamamlanmazsa ne iade ederim? Olası senaryolar şunları içerebilir:
- Ürün tükendi
- Kullanıcı maksimum sipariş sınırına ulaşıldı
- Kredi kartı işlemi hatası (yetersiz bakiye vb.)
Bu, 400 veya 500 için uygun gibi görünmüyor. Daha iyi bir kod yoksa, 400 olarak görebildiğim bir şey varsa - istek iş kurallarına göre geçersizdi. Sadece doğru görünmüyor.
Düzenleme: Aynı konuyla ilgili bu mevcut tartışmayı da buldu . Buradaki tüm cevaplar, 400, 409 veya 422 uzantılarının kullanılması arasında bazı tartışmalarla birlikte, bu tür ihlal için durum kodlarının kullanılmasına işaret ediyor gibi görünüyor.