Some common error codes for GET requests include:
-
301 Moved Permanently
- If the resource has been moved -
400 Bad Request
- If the client request is unaccaptable, i.e. if the client sends none-sense parameters in the request -
401 Unauthorized
- If the client did not provide any valid credentials -
403 Forbidden
- If the client is authorized but not allowed to perform the request (you can also return a 404 in this case to conceal that this resource exists at all) -
404 Not Found
- If the requested resource could not be found
Create a POJO to represent these error messages and then return it using a Jersey Response
object.
For example the error object could look like this:
public class ApiError {
private String code;
private String message;
private String developerMessage;
// Getters and Setters here
}
To return it you can do the following (i.e. in your catch block or your custom ExceptionMapper):
ApiError error = new ApiError("409-1", message, developerMessage);
return Response.status(Response.Status.CONFLICT).entity(error).build();
This way you can provide nicely formatted JSON/XML error messages containing custom error codes and further information for the developer. The error entities will get serialized according to your @Produces
annotation.
References: