REST-foutmelding in HTTP-kop of responsorgaan?

Ik heb een rustdienst die wordt blootgesteld aan iPhone- en Android-clients. Momenteel volg ik de HTTP-codes 200, 400, 401, 403, 404, 409, 500 enz.

Mijn vraag is waar is de aanbevolen plaats om de reden / beschrijving / oorzaak van de fout te plaatsen? Is het logischer voor de rest API om altijd aangepaste reden in de koptekst te hebben?

< 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

Of is het beter om het te hebben in het antwoordorgaan via JSON?

< 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" }

Antwoord 1, Autoriteit 100%

citeren uit de HTTP-specificatie voor 400.x-foutcodes:

De 4xx-klasse statuscode is bedoeld voor gevallen waarin de klant
lijkt erf te hebben. Behalve bij het reageren op een hoofdverzoek, de
Server moet een entiteit bevatten met een verklaring van de fout
situatie, en of het een tijdelijke of permanente aandoening is. Deze
Statuscodes zijn van toepassing op elke aanvraagmethode. Gebruikersagenten zouden moeten
Toon alle meegeleverde entiteit aan de gebruiker.

Het is de beste praktijken om het foutbericht op te nemen als een entiteit in het lichaam van de HTTP-respons – of het nu JSON, platte tekst, geformatteerde HTML, of wat andere indeling die u misschien wilt gebruiken.


Antwoord 2, Autoriteit 22%

Het is beter om foutgegevens in het lichaam te hebben. Bovendien ondersteunen veel (de meeste / bijna alle, bijv. WSGI) -servers en -klanten niet de naam van de foutcode – behandelen ze als vaste paren (dus bijv. 400 is altijd “slecht verzoek” en niet “slecht verzoek” Vergat om de gebruikers-ID te specificeren “). Zelfs als ze niet zullen breken, zullen ze niet om uw speciale naam geven voor specifieke foutcode.


Antwoord 3, Autoriteit 4%

De fout hoort niet in het lichaam. Het behoort in de waarschuwingskop.

De HERTP-kop van de waarschuwing HTTP bevat informatie over het mogelijk
problemen met de status van het bericht.

referentie

Other episodes