Reputation: 8068
When building a RESTful service is it standard practice to return a payload (Json) along with an HTTP Status code (say 500, 403)? I find sometimes the status code alone isn't enough context for the calling app.
Upvotes: 2
Views: 106
Reputation: 2255
I posted a question about this too here
So at the end I learn what is in the EDIT 2: return your appropiate HTTP status and in the body of the response, a JSON describing the error encountered, like:
HTTP 404
{
"code": 123,
"message": "The resource you are looking for does not exists"
}
This is the way Twitter and others works.
Upvotes: 2
Reputation: 4482
The bullet form answer is:
You can find an in-depth answer here: http://soabits.blogspot.dk/2013/05/error-handling-considerations-and-best.html
Upvotes: 0
Reputation: 16951
Although it is a work in progress, but it worths reading: Problem Details for HTTP APIs
Quote from the specification:
For example, consider a response that indicates that the client's
account doesn't have enough credit. The 403 Forbidden status code
might be deemed most appropriate to use, as it will inform HTTP-
generic software (such as client libraries, caches and proxies) of
the general semantics of the response.However, that doesn't give the API client enough information about why the request was forbidden, the applicable account balance, or how to correct the problem. If these details are included in the
response body in a machine-readable format, the client can treat it
appropriately; for example, triggering a transfer of more credit into the account.This specification does this by identifying a specific type of
problem (e.g., "out of credit") with a URI [RFC3986]; HTTP APIs can
do this by nominating new URIs under their control, or by reusing
existing ones.
Upvotes: 2
Reputation: 3799
A payload is often returned along with the response code, but usually it explains the response code itself in a generic fashion. For instance, a web server returning a 404 to a client which accepts text/html will likely have 1 HTML page it serves up whenever such a response is necessary. There may be additional contextual information returned (such as the server version, a log identifier for debugging purposes, etc.) but nothing to indicate a more specific reason.
A 400 error series means it's actionable by the client. Adding sub error codes would tightly couple your client to the server.
Upvotes: 0