Return exception from JAX-RS Rest Service as JSON

前端 未结 4 1694
一生所求
一生所求 2021-01-16 03:19

Is it in some way possible that an exception thrown from a rest service is returned as JSON? I have a JAX-RS Rest Service where I would like to achieve this. When I throw it

相关标签:
4条回答
  • 2021-01-16 03:54

    get the response data in a structure with status and data, if the status is error, show the correct message. you can try this way

    {
    "status": "error",
    "data": {
        "message": "information of error message"
    }
    

    }

    0 讨论(0)
  • 2021-01-16 03:57

    It will respond as JSON.

    @Provider
    @Singleton
    public class ExceptionMapperProvider implements ExceptionMapper<Exception>
    {
    
        @Override
        public Response toResponse(final Exception exception)
        {
                return Response.status(HttpStatusCodes.STATUS_CODE_SERVER_ERROR).entity(new BasicResponse(InternalStatus.UNHANDLED_EXCEPTION, exception.getMessage())).type(MediaType.APPLICATION_JSON).build();    
        }
    }
    
    @XmlRootElement
    public class BasicResponse {
    
        public String internalStatus;
    
        public String message;
    
        public BasicResponse() {}
    
        public BasicResponse(String internalStatus, String message){
            this.internalStatus = internalStatus;
            this.message = message;
        }
    }
    
    0 讨论(0)
  • 2021-01-16 03:59

    You can create custom exception,It takes JSON request and response

        @POST
        @Path("/betRequest")
        @Consumes({ "application/json", "application/x-www-form-urlencoded" })
        @Produces({ "application/json", "application/x-www-form-urlencoded" })
        public Response getBetRequest(String betRequestParams, @Context HttpServletRequest request) 
        {
          BetResponseDetails  betResponseDetails = new BetResponseDetails();
          try{
               //you code here
              }
          catch (JSONException ex) 
             {
                ex.printStackTrace();
                betResponseDetails.setResponseCode("9002");//your custom error code
                betResponseDetails.setResponseStatus("Bad Request");//custom status
                betResponseDetails.setResponseMessage("The request body contained invalid JSON");//custom error massage
                return Response.status(200).entity(betResponseDetails).build();
            }
         }
    

    Create One POJO BetResponseDetails

    public class BetResponseDetails {
        private String ResponseStatus;
        private String ResponseCode;
        private String ResponseMessage;
    
      // getter/setter
     .......
    }
    
    0 讨论(0)
  • 2021-01-16 04:05

    catch your exceptions, then build a response object in a standardized format such as

    error: {
        code: 'XXX',
        status: HTTPStatus,
        message: 'my error message'
    }
    

    And send it as a response with an error status (from Response.Status, usually 4xx or 5xx)

    0 讨论(0)
提交回复
热议问题