Что я возвращаю и как из службы SOAP? - PullRequest
0 голосов
/ 17 марта 2011

Я выполняю рефакторинг некоторых сервисов SOAP и REST.Сервисы SOAP отвечают запрошенным объектом и больше ничего.Например, GET возвращает XML-представление запрашиваемой сущности.За ошибки они выбрасывают стандартные исключения.Службы REST имеют идентичное поведение.

Я изменяю службы REST, чтобы выдавать исключения WebApplicationExceptions и возвращать правильные коды http (например, http 201 для успешного сообщения вместо того, чтобы всегда возвращать http 200).Я не знаком с SOAP, поэтому я задаюсь вопросом, что, если что-то, нужно изменить.

Каковы лучшие практики для SOAP:

1) Возврат кодов http (например, возврат http201 для запросов POST / создания) для случаев успеха и ошибок?Если да, то как?

2) Бросать исключения?Вы выбрасываете за все ошибки, в том числе неверные данные, отправленные абонентом службы?Это должно быть исключение SOAP или исключение WebApplicationException?

Я с нетерпением жду ваших отзывов.

1 Ответ

2 голосов
/ 17 марта 2011

SOAP функционирует независимо от транспортного уровня. Хотя вы не используете его, SOAP может отправляться через другие протоколы, такие как SMTP. Таким образом, лучшие практики будут диктовать, что

1) Вы не должны возвращать HTTP-коды вообще в своем ответном сообщении. На самом деле, вы, вероятно, не в состоянии. Сообщения об успехе / ошибке обычно определяются либо в пользовательском заголовке SOAP, либо в теле ответа (метод тела ответа проще).

2) Каждое исключение, создаваемое веб-службой, должно быть исключением SOAP. Таким образом, клиент, каким бы он ни был, может интерпретировать исключение SOAP и действовать соответствующим образом.

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