Метод API отдыха получить - PullRequest
0 голосов
/ 03 декабря 2018

Как мне проверить, что я получаю объект из БД и возвращаю правильный ответ?Я использую restController.Я хочу проверить, получаю ли я пользователя из БД или нет.Если я нашел пользователя, я хочу вернуть пользователя и HttpStatus.OK, если нет - HttpStatus.NOT_FOUND.

public ResponseEntity<User> getUser(@PathVariable("id") int id) {
        User User= this.userService.getUserById(id);
        ResponseEntity<User> responseEntity = new ResponseEntity<>(HttpStatus.NOT_FOUND);
        if (Objects.nonNull(user)) {
            responseEntity = new ResponseEntity<>(user, HttpStatus.OK);
        }
        return responseEntity;
    }

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Проще говоря, если вы хотите использовать Optional для проверки доступности пользователя в базе данных:

public ResponseEntity<User> getUser(@PathVariable("id") int id) {
    User User= this.userService.getUserById(id);
    ResponseEntity<User> responseEntity = new ResponseEntity<>(HttpStatus.NOT_FOUND);
    if (Optional.ofNullable(user).isPresent()) {
        responseEntity = new ResponseEntity<>(user, HttpStatus.OK);
    }

    return responseEntity;
}
0 голосов
/ 04 декабря 2018

Для меня это элегантный способ сделать это, обычно это длинный тип

public ResponseEntity<User> getUser(@PathVariable ("id") Long id) {
            return Optional.of(this.userService.getUserById(id))
                    .map(u -> new ResponseEntity<>(u, HttpStatus.OK))
                    .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
        }
0 голосов
/ 03 декабря 2018

Параметры пути не могут быть сделаны необязательными, вам придется сопоставить 2 URL-адреса с вашим методом get controller.Попробуйте ниже:

@RequestMapping(method=GET, value={"/", "/{id}"})
 public ResponseEntity<User> getUser(@PathVariable Optional<Integer> id) {

    if(!id.isPresent()){
      return ResponseEntity.notFound().build();
    }
    User User= this.userService.getUserById(id);
    ResponseEntity<User> responseEntity = new ResponseEntity<>(HttpStatus.NOT_FOUND);
    if (Objects.nonNull(user)) {
        responseEntity = new ResponseEntity<>(user, HttpStatus.OK);
    }
    return responseEntity;
}

Для этого решения требуется Spring 4.1+ и Java 1.8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...