Meaningful REST Response Messages

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: 

猜你喜欢

转载自kilik.iteye.com/blog/1965520