2012-12-20 15 views
54

iPhone ve Android müşterilerine maruz REST hizmeti var. Şu anda HTTP kodlarını izleyin 200, 400, 401, 403, 404, 409, 500 vbHTTP Üstbilgisinde veya Yanıt Gövdesinde dinlenme hatası mı?

Sorum nerede hata nedeni/açıklama/ettirmek koymak için önerilen bir yerdir nedir? REST API'sı için her zaman üstbilgide özel bir nedene sahip olması daha mantıklı mı?

< HTTP/1.1 400 Bad Request - Missing Required Parameters. 
< Date: Thu, 20 Dec 2012 01:09:06 GMT 
< Server: Apache/2.2.22 (Ubuntu) 
< Connection: close 
< Transfer-Encoding: chunked 

Ya da JSON üzerinden Yanıt Gövdesine sahip olmak daha mı iyi?

< HTTP/1.1 400 Bad Request 
< Date: Thu, 20 Dec 2012 01:09:06 GMT 
< Server: Apache/2.2.22 (Ubuntu) 
< Connection: close 
< Transfer-Encoding: chunked 
< Content-Type: application/json 
{ "error" : "Missing Required Parameters" } 
+1

Günümüzde, 'X-HTTP-Error-Description: Gerekli parametreler eksik' gibi özel başlıklar eklemek yaygın bir uygulamadır. – andreszs

cevap

66

:

durum kodunun 4xx sınıfı istemci yanıldı gibi görünüyor hangi durumlar için tasarlanmıştır

. HEAD isteğine yanıt verirken dışında sunucu hatası durumun bir açıklama içeren bir varlık içermeli ve bunun geçici veya kalıcı bir durum olup olmadığı. Bu durum kodları herhangi bir istek yöntemine uygulanabilir. Kullanıcı aracıları , kullanıcıya dahil edilmiş herhangi bir varlığı göstermelidir.

HTTP yanıt metninde bir varlık olarak hata mesajını da en iyi uygulamadır - Sen kullanmak isteyebilirsiniz diğer her türlü biçim JSON, düz metin, biçimlendirilmiş HTML veya olması.

+2

Bu soruya cevap vermiyor: Hata iletisini yanıt üstbilgisinde veya yanıt gövdesinde koymak daha mı iyi? –

18

Vücutta hata ayrıntılarının olması daha iyidir. Ayrıca, birçok (çoğu/neredeyse hepsi, örneğin WSGI.) Hata kodu adını değiştirerek desteklemeyen sunucuları ve istemcileri - sabit çiftleri olarak onları tedavi (böylece örneğin 400 her zaman "Geçersiz İstek" olup "Kötü İsteği -. You Kullanıcı kimliğini belirtin "). Kırılmayacak olsalar bile, belirli bir hata kodu için özel adınızı umursamazlar. 400.x hata kodları için HTTP şartname gelen aktaran

0

Hep de öyle. Genelde durum mesajını ön uçun kullanıcı için "409 - Yeni kullanıcıyı ekleyemedim, zaten var." Gibi kullanıcı dostu bir şekilde gösterebileceği bir şeye ayarladım. UI geliştiriciler yapmanız gerekenler hakkında akıllı seçimler yapmak deneyebilmemiz

Sonra JSON olarak vücutta hata koşullarının ayrıntıları içerir.

{ 
    "status": 409, 
    "message": "The user <username> was already added on <when> by <who> and given the user id 12345.", 
    "errors": { 
    "id": 12345 
    } 
}