Ответ API остальных (Исключение / Ошибка / По умолчанию) - PullRequest
0 голосов
/ 09 октября 2018

Я хотел бы узнать наилучшую практику в следующих случаях, касающихся ответов API остальных.

Первый фрагмент кода

@GetMapping("/person/{id}")
public ResponseEntity<Person> postPersonDetails(@PathVariable("id) Long id) {
    Person person = personService.getPersonById(id);
    if (null == person) {
       throw new ResourceNotFoundException().withMessage("PERSON_NOT_FOUND");
    }
    return new ResponseEntity<Person>(person, HttpStatus.OK);
}

Второйкусок кода

@GetMapping("/person/{id}")
public ResponseEntity<Person> postPersonDetails(@PathVariable("id) Long id) {
    Person person = personService.getPersonById(id);
    if (null == person) {
       return new ResponseEntity<Person>(null, HttpStatus.NotFound);
    }
    return new ResponseEntity<Person>(person, HttpStatus.OK);
}

Вопрос

  1. Какой из них лучше ответить на сообщение об ошибке потребителю API (пользователю)?

  2. Бросок исключения оставляет сообщение об ошибке в журнале.Если выбрасывать исключение лучше, как я должен избегать оставлять сообщения об ошибках, которые происходят из преднамеренных исключений?

Спасибо

1 Ответ

0 голосов
/ 09 октября 2018

Я бы рассмотрел измененный подход из вашего первого примера: вы добавляете PersonNotFoundException и добавляете обработчик исключений, который передает это конкретное исключение в HTTP 404 и соответствующее сообщение об ошибке в полезной нагрузке.

Например,:

@ExceptionHandler(PersonNotFoundException.class)
public ResponseEntity<Void> personNotFound()
{
    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}

Это позволяет сохранить код сопоставления от исключения до ответа отдельным и повторно используемым.

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