Рекомендуется ли создавать исключение для передачи ответного сообщения пользователю в API?

HTML - это язык разметки. Независимо от того, сколько строк вы вставляете в исходный код, вы ничего не увидите от него в презентации (конечно, если предположить, что вы не используете

 или white-space:pre).  HTML использует элемент 
для представления строки. Таким образом, вам действительно нужно преобразовать реальные и невидимые строки, обозначенные символами xA (newline, linefeed, LF, \n) и / или xD (возврат каретки, CR, \r) элементом HTML
.

В большинстве языков программирования вы можете просто сделать это заменой строки "\n" на "
"
.

2
задан user95814 1 March 2019 в 15:05
поделиться

4 ответа

Я думаю, что имеет смысл зарегистрировать ошибку и просто отобразить ошибку HTTP с ошибкой, например BAD_REQUEST или INTERNAL_SERVER_ERROR ...

0
ответ дан Judy1989 1 March 2019 в 15:05
поделиться

Это сложная и тонкая тема - она ​​вполне может быть основана на мнении.

Во-первых, избегайте использования исключений для передачи логики приложения. Ваш пример не предполагает, что вы делаете это, но часто пользовательские исключения используются для передачи логики приложения или домена, и обработка этого в блоке try / catch сложна для чтения, тестирования и развития. Например, если покупка не удалась из-за того, что клиент превысил кредитный лимит (бизнес-правило), я бы не использовал пользовательское исключение для управления этим экземпляром.

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

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

Наконец, сконцентрируйтесь на том, как вы сообщаете свои ошибки своему клиенту - обычным делом является использование кодов ошибок HTTP. В конце концов, вы можете в конечном итоге преобразовать свое собственное исключение в код «HTTP: 500», и вы захотите, чтобы ваши клиентские приложения могли согласовывать эти исключения согласованным образом.

0
ответ дан Neville Kuyt 1 March 2019 в 15:05
поделиться

Как указал Невилл; Это дискуссионная тема, и нет ничего действительно правильного или неправильного.

Мое мнение таково, что API должен быть независимым от пользовательского интерфейса. Так что, если исключение выдает исключение ... все в порядке, чтобы отбросить его обратно ... и пусть клиент справится с этим или решит, что делать с этим исключением. Потому что некоторые клиенты могут захотеть показать красивое удобное для пользователя сообщение; в то время как другому клиенту может потребоваться фактическое сообщение (например, если другой API вызывает этот API).

0
ответ дан Deepak 1 March 2019 в 15:05
поделиться

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

В Spring вы можете использовать @RestControllerAdvice и @ExceptionHandler, чтобы перехватить любое исключение и вернуть приятное сообщение для пользователя. Нравится:

@Slf4j
@RestControllerAdvice
public class ErrorHandlerController {

    @ExceptionHandler(CustomException.class)
    public ResponseEntity<ApiErrorResponse> handleApiException(CustomException ex, Locale locale) {
        log.error("Custom error catch with the code {}", ex.getErrorCode(), ex);
        ApiErrorResponse error = new ApiErrorResponse(ex, locale);
        return new ResponseEntity<>(error, ex.getHttpStatus());
    }
}
0
ответ дан Dherik 1 March 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: