Мне интересно, как лучше всего создавать сообщения в контроллере на основе результата службы, до интерфейса. Я думаю в контексте java/spring с помощью контроллеров отдыха, но он также отражает модель MVC. Очевидно, что примеры, которые я видел в Интернете, - это простой способ понять, что такое лучшие практики в реальном мире. Таким образом, в случае, давайте предположим, что в следующий сценарий:Правильный способ написать контроллер
- У нас есть CalculateController контроллер с одним методом doMath (Int А, внутр б)
- У нас есть сервис CalculatorService, которые выполняют математику это самостоятельно в методе doMath (int a, int b).
- Мы хотим выполнить дополнительную проверку входных параметров. Метод называется validateInput (int a, int b).
- Мы хотим отправить как результат расчета ответа или конкретную информацию, почему это не удалось.
Так что теперь вопросы:
В результате выполнения метода контроллера, я бы retuun карта объектов, которые будут анализироваться в формате JSON. Возможные объекты будут:
{ "результат": "12" }
{ "ERRORCODE": "неправильные параметры" }
это правильно, или я должен нацелены на обработку ошибок? Я знаю, что я мог бы дополнительно использовать коды ошибок http, например 400 или 406, чтобы указать, что входные параметры неверны, но лично я предпочитаю не использовать коды ошибок HTTP, чтобы указать результат логики приложения. (Я рассматриваю входную проверку как логику приложения)
- Где метод validateInput должен быть размещен, в контроллере или на обслуживании?
- В методе validateInput я хочу, чтобы проверить два упрощенных условий
а) является < б, а затем информирует пользователя с сообщением «а не может быть меньше, чем б»
б) является * a == b, а затем проинформировать пользователя с сообщением «квадрат не может быть равен b».
Как я могу предоставить дополнительное сообщение на основе результата? я могу думать о двух решениях:
- возвратного Карта, что в случае положительного результата проверки имеет результат = верно, и в случае отрицательного результата результата = ложь, и ERRORCODE с соответствующим сообщением
возвращения булева значение, указывающее результат проверки, и дополнительно использовать исключения для отрицательного результата. (вопрос о бонусе, в таком случае следует исключить или исключить исключение?)
- Для обслуживания метода его следует обрабатывать одинаково?
Это действительно полезно, спасибо! Особенно исключение Handler, из того, что я прочитал, я считаю, что можно даже создать локализованные ответы в качестве ответа. –