Вы действительно не должны использовать операцию GET.
Я бы использовал операцию POST и вернул 201 Created со ссылкой на ресурс, описывающий новое состояние системы.
Например, я бы перенаправил на ресурс статуса выключения:
POST /stop/123
...
201 CREATED
Location:
http://acme.com/shutdownstatus/123
Клиент может опросить ресурс, чтобы проверить статус
GET /shutdownstatus/123
...
<shutdown xmlns="http://schemas.serverapp.com/shutdown">
<status>pending</status>
<message>Looks good so far</message>
</shutdown>
Эта новая операция GET всегда будет возвращать состояние сервера для этого идентификатора. Таким образом, вы узнаете, правильно ли он был выключен. Если выключение сервера занимает много времени, клиент может опросить этот ресурс, чтобы проверить различные состояния выключения, пока оно не будет завершено. Таким образом, вы можете быстро вернуться к исходному запросу на отключение сервера.
Если бы в вашем процессе было выброшено исключение, я бы не возвращал его клиенту, у меня был бы статус для исключения в ресурсе состояния сервера. Я всегда избегаю заставлять клиента обрабатывать исключительный случай, когда я могу представить его как ресурс. Это позволяет свободно изменять ресурс, например, при изменении или исправлении метода, вызывающего исключение, без изменения внешнего API.
person
Daniel Canas
schedule
30.06.2011
server.stop(id)
что-то возвращает? - person Bobby   schedule 30.06.2011