Как отправить ошибку ответа 400/500/404 через springboot - PullRequest
0 голосов
/ 12 октября 2019
@PutMapping("/createUser")
public String createUser(@RequestBody User user) {
    User thisValue = repository.findByUsername(user.getUsername());
    if thisValue != null {
        sendResponseHeaders(400, -1); // wont work
        return "account exist";
    }
    sendResponseHeaders(200, -1); // wont work
    return "reached here";
}

com.sun.httpserver, который я использовал ранее, имеет метод sendResponseheaders, и я не могу найти его в springboot. Есть ли способ сделать это? В основном то, что я хочу. Если я отправлю тело запроса json с существующим именем пользователя, то должна появиться ошибка ответа 400

Ответы [ 3 ]

1 голос
/ 12 октября 2019

В дополнение к возвращению явного ResponseEntity вы можете выдать исключение (или разрешить исключение исключения), которое аннотируется на уровне класса с помощью @ResponseStatus. Конфигурация Spring MVC по умолчанию будет перехватывать любое исключение, исходящее из метода контроллера, и будет возвращать HTTP 500 (общая «ошибка сервера»), если у него нет аннотации, или заданное состояние, если это так.

1 голос
/ 12 октября 2019

Вы можете использовать org.springframework.http.ResponseEntity.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>x.x.x.RELEASE</version>
</dependency>

Как это.

@PutMapping("/createUser")
public ResponseEntity createUser(@RequestBody User user) {
    User thisValue = repository.findByUsername(user.getUsername());
    if (thisValue != null) {
        return ResponseEntity.badRequest().build();
    }
    return ResponseEntity.ok().build();
}

Дополнительная информация

0 голосов
/ 12 октября 2019

В обычном контроллере:

@PutMapping("/createUser")
public ModelAndView createUser(@RequestBody User user) {
    ModelAndView mv= new ModelAndView("reached-here");
    User thisValue = repository.findByUsername(user.getUsername());
    if (thisValue != null) {
        model.setStatus(HttpStatus.BAD_REQUEST);
        model.setValueName("account-exist");
    }else{
        model.setStatus(HttpStatus.OK);
    }
    return mv;
}

В контроллере REST:

@PutMapping("/createUser")
public ResponseEntity<String> createUser(@RequestBody User user) {
    User thisValue = repository.findByUsername(user.getUsername());
    if (thisValue != null) {
        return new ResponseEntity<String>("account-exist", HttpStatus.BAD_REQUEST);
    }else{
        return new ResponseEntity<String>("reached here", HttpStatus.OK);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...