Değeri için bunu farklı yapıyorum. Başarılı bir çağrıda sadece JSON nesneleri bulunur. Gerçek ve JSON nesnesi olan bir yük alanı gösteren bir başarı alanı içeren bir üst düzey JSON nesneye ihtiyacım yok. Sadece uygun JSON nesnesini 200 veya başlıktaki HTTP durumu için 200 aralığında uygun olanı döndürürüm.
Ancak, bir hata varsa (400 ailesinde bir şey) iyi biçimli bir JSON hata nesnesi döndürürüm. Örneğin, istemci bir e-posta adresi ve telefon numarası ile bir kullanıcı POSTing ve bunlardan biri hatalı (yani temel veritabanına ekleyemezsiniz) böyle bir şey döndürür:
{
"description" : "Validation Failed"
"errors" : [ {
"field" : "phoneNumber",
"message" : "Invalid phone number."
} ],
}
Buradaki önemli bitler, "field" özelliğinin, doğrulanamayan JSON alanıyla tam olarak eşleşmesi gerektiğidir. Bu, müşterilerin isteklerinde neyin yanlış gittiğini tam olarak bilmesini sağlar. Ayrıca, "ileti" isteğin yerel ayarında. Hem "emailAddress" hem de "phoneNumber" geçersizse, "error" dizisi her ikisi için de girişler içerir. Bir 409 (Çakışma) JSON yanıt gövdesi şöyle görünebilir:
{
"description" : "Already Exists"
"errors" : [ {
"field" : "phoneNumber",
"message" : "Phone number already exists for another user."
} ],
}
HTTP durum kodu ve bu JSON ile istemci, hatalara belirli bir şekilde yanıt vermek için ihtiyaç duydukları her şeye sahiptir ve HTTP durum kodlarını değiştirmeyi tamamlamaya çalışan yeni bir hata standardı oluşturmaz. Bunların yalnızca 400 hata aralığında gerçekleştiğini unutmayın. 200 serisindeki herhangi bir şey için uygun olan her şeyi döndürebilirim. Benim için genellikle HAL benzeri bir JSON nesnesidir, ancak bu gerçekten önemli değildir.
Eklemeyi düşündüğüm bir şey, "hatalar" dizi girişlerinde veya JSON nesnesinin kökünde sayısal bir hata koduydu. Ama şu ana kadar ihtiyacımız olmadı.