Итак, у меня есть настройка службы REST с Джерси.
Мой POJO просто помечается как @ XmlRootElement
Я отправляю запрос POST в службу REST, и все работает нормально.
1 - Я отправляю в сервис некорректный XML-код. Я получаю страницу 400 Bad Request по умолчанию для контейнеров. Используя Glassfish 3, я точно не помню, но знаю, что могу изменить или сказать своему веб-приложению, чтобы он соответствовал моим собственным 400 ошибочным запросам, верно? Где я могу найти документы по этой конкретной теме.
2- Я отправляю действительный XML, но в одно из ожидаемых полей я помещаю пустое значение. Мой сервис пытается что-то сделать и выдает исключение постоянства. Я возвращаю страницу 500 Внутренних ошибок сервера по умолчанию для контейнеров и в ней выдается исключение. Я думаю, что я могу сопоставить и свою собственную страницу ошибок, но я не просто хочу показать сообщение об исключении. Это считается проблемой безопасности.
Я бы в основном хотел самостоятельно проверить поля на основе моей бизнес-логики и вернуть клиенту сообщение об ошибке, такое как «Поле1 недействительно». Ничего больше, ни меньше. И клиент должен иметь возможность анализировать код ошибки и также знать, какое поле было неправильным.
Кроме того, что я могу сделать, если в моей службе более одного типа ошибок неверного запроса? Например, поле может ожидать значение INT в диапазоне 1-3, но конкретный бизнес-запрос предполагает отправку значения 2 и 3.
Так что для проверки типа / значения я хочу просто сказать «Неверное имя поля здесь». Но для конкретной бизнес-логики скажем, например, «Неверная учетная запись» или «Срок действия учетной записи истек» или «Адрес не совпадает» и т. Д. *
Или как насчет того, когда у меня более 1 кода успеха?
В основном я беру старый сервис типа "xml" и перехожу на стиль REST для проверки концепции и приведения ее в соответствие со стандартами. Старый в значительной степени на 100% POST даже при «запросе результатов». То есть: GET. Таким образом, в основном вы отправляете в него XML, он читает XML, вызывает бизнес-логику, и логика возвращает соответствующий код в ответе XML. Так что все HTTP 200 OK и код бизнес-логики возвращается в ответе XML.Так, единственный раз, когда клиент получает ошибку 500, это когда происходит серьезный сбой, когда служба не может создать ответ XML. Даже неверный XML возвращается как 200 OK , но ответ XML указывает на это с моими собственными кодами ошибок.
Некоторое время назад мне предложили использовать SOAP для более ориентированных на сообщения сервисов, но я все еще думаю, что это слишком тяжело, и я могу достичь с помощью REST того, что делает мой сервис, даже если мне не нужна большая часть REST?