Как установить код состояния 400 в объекте ответа - PullRequest
0 голосов
/ 25 января 2020

Я использую объект Response из javax.ws.rs-api, и хотя я могу установить статус, например Response.status (Response.status.BAD_REQUEST) .build (), возвращаемый код ответа всегда равен 200 с телом ответа. это содержит параметр statusInfo, который говорит BAD_REQUEST. Есть ли способ установить код ответа равным 400 на основе некоторых проверок ввода на стороне сервера?

Ответы [ 2 ]

0 голосов
/ 25 января 2020

Это работает для меня, я проверял.

 @GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public Response getTestResult() {
    logger.info("Requested Test Service");
    try {
        Object result = "";[enter image description here][1]
      return  Response.status(Response.Status.BAD_REQUEST)
              .entity(result).build();
    } catch (Exception e) {
        return Response.ok("error", e.getMessage()).build();
    }

}
0 голосов
/ 25 января 2020

Вместо того, чтобы просто устанавливать статус ответа, выведите ошибку из сервисного уровня и дайте ей распространиться на контроллер. В контроллере может быть что-то вроде

@Controller
public class MyService {
    @RequestMapping(value = "your api url path", method = RequestMethod.GET, produces = "application/
    public Response jsonAccounts(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return Response.status(Response.Status.BAD_REQUEST).entity("Bad request received").build();
    }

    @ExceptionHandler(MyBadException.class)
    @ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Bad request Request Exception")
    public void unexpectedError(HttpServletRequest request, Exception 
        log.debug("return HttpStatus.BAD_REQUEST, unexpectedError due to Exception", e);
    }
}
...