Ответ валидации Spring-MVC на клиент REST - PullRequest
1 голос
/ 21 августа 2011

Я использую Spring 3 MVC (без представлений и моделей, только взаимодействие с машиной), REST API.
Мой контроллер выполняет проверку входного объекта и может выдавать несколько ошибок проверки (например, «неверный адрес электронной почты», «phone umber отсутствует ").
Мой вопрос: каков наилучший способ вернуть несколько описаний ошибок в мой объект ответа HTTP?Предполагая, что я не могу вернуть «карту ошибок» в качестве возвращаемого типа (метод уже возвращает объект ответа или он недействителен)

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Это может быть немного устаревшим, но лучше использовать Http-коды ответов в максимально возможной степени, если вы разрабатываете строго REST-сервисы. Я бы вернул 422 с массивом сообщений об ошибках в теле, если есть проблемы с вводом. Если нет, я бы отправил обратно 200 без тела.

Также для создания новой записи, нового отображения и т. Д. Я бы отправил обратно 201 с ссылкой URI новой сущности в заголовке Location.

0 голосов
/ 21 августа 2011

Я бы порекомендовал заполнить объект сообщениями об ошибках, сопоставленными с их соответствующими ошибками. (Например, {"email": "Должен быть указан действительный адрес электронной почты"}).

А в методе Controller, где вы выполняете проверку, если вы помечаете метод с помощью аннотации @ResponseBody (и убедитесь, что ваше приложение Spring MVC является управляемым mvc: annotation), вы можете просто вернуть этот объект после завершения проверка достоверности.

Помечая ваш метод с помощью @ResponseBody, Spring 3 автоматически сериализует объект в JSON. Затем на вашем внешнем интерфейсе вы можете использовать простой вызов jQuery для анализа ошибок и публикации сообщений об ошибках соответственно.

Вот хороший пример того, как все это работает в блоге Spring 3 .

...