RESTful способ вызвать события на стороне сервера - PullRequest
10 голосов
/ 13 декабря 2011

У меня есть ситуация, когда мне нужно, чтобы у моего API был вызов для запуска события на стороне службы, от клиента не требуется никакой информации (кроме аутентификации), и сервер ничего не должен возвращать. Так как это не вписывается в стандартное взаимодействие CRUD / Resource, я должен принять это как индикатор того, что я делаю что-то не так, или есть шаблон дизайна RESTful, чтобы справиться с этими условиями?

Ответы [ 2 ]

10 голосов
/ 13 декабря 2011

Ваш клиент может просто:

POST /trigger

На что сервер ответит 202 Accepted.

Таким образом, ваш запрос может по-прежнему содержать соответствующие заголовки аутентификации, и API может быть расширен в будущем, если вам потребуется клиент для предоставления объекта или необходимо вернуть ответ с информацией о том, как запросить состояние события.

В том, что ты здесь пытаешься сделать, нет ничего "без RESTful"; Принципы REST не должны соотноситься с операциями CRUD над ресурсами.

<Ч />

Спецификация для 202 говорит:

Сущность, возвращаемая с этим ответом, ДОЛЖНА включать указание текущий статус запроса и указатель на монитор состояния или некоторая оценка того, когда пользователь может ожидать, что запрос будет выполнено.

Вы не обязаны отправлять что-либо в ответе, учитывая "СЛЕДУЕТ" в определении.

0 голосов
/ 13 декабря 2011

REST определяет характер связи между клиентом и сервером.В этом случае, я думаю, что проблемы в том, что нет информации для передачи.

Есть ли какая-то причина, по которой клиенту вообще нужно это инициировать?Я бы сказал, что ваше серверное событие должно быть полностью автономным внутри сервера.Возможно, периодически запускать его с помощью вызова cron?

...