Является ли RPC замаскированным под REST плохой идеей? - PullRequest
8 голосов
/ 22 декабря 2008

Вся наша система разработана на основе REST и теперь рассматривает, как процессы, которые достаточно четко обозначены как RPC по назначению, могут быть сопоставлены с ресурсами RESTful без использования глаголов в URL. Наш удаленный вызов процедуры используется для перестройки нашего поискового индекса, когда список содержимого был изменен в другом месте.

Что мы думаем о том, чтобы сделать это:

POST / index_updates

<indexUpdate><contentId>123</contentId></indexUpdate>

Ничего плохого в этом само по себе нет, но запах этого созданного ресурса не возвращает URL вновь созданного ресурса, например, / index_updates / 1234, к которому мы можем получить доступ с помощью GET.

Механизм индексирования, который мы используем, имеет механизм ведения журнала, поэтому теоретически мы можем вернуть URL-адрес ресурсу index_update, чтобы позволить GET получить ресурс, но, честно говоря, мы не заинтересованы в ресурсе поскольку это не более, чем замаскированный RPC.

Так что мой вопрос в том, выражается ли RESTfulness в структуре или намерении. Я чувствую, что структура того, что я обрисовал в общих чертах, успокаивает, но намерение - нет.

У кого-нибудь есть комментарии или советы?

Спасибо

Chris

Ответы [ 3 ]

5 голосов
/ 22 декабря 2008

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

4 голосов
/ 09 апреля 2009

Одной из причин, по которой вы можете вернуть новый идентификатор ресурса из вашего вызова POST / index_updates, является мониторинг состояния операции.

POST / index_updates
123

201 Created
Location: /index_updates/a9283b734e

GET / index_jobs / a9283b734e

 <index_update><percent_complete>89</percent_complete></index_update>
0 голосов
/ 22 декабря 2008

Это, очевидно, субъективное поле, но GET PUT POST DELETE - достаточно богатый словарный запас, чтобы что-то описать. И когда я еду в не говорящие по-английски азиатские страны, я просто указываю, и они знают, что я имею в виду, так как я не говорю на языке ... , но трудно действительно по-настоящему хорошо поговорить с кем-то ...

Неплохая идея замаскировать RPC как REST, так как это все упражнение. Лично я думаю, что SOAP был избит и ненавидим, хотя на самом деле он имеет много сильных сторон (и с HTTP-сжатием, HTTP / SSL и cookie-файлами, много других сильных сторон) ... и ваше приложение действительно предоставляет методы для вызова клиентом. Почему вы хотите перевести это на REST? Я никогда не был убежден. SOAP позволяет вам использовать язык, который мы знаем и любим, язык интерфейса программирования.

Но чтобы ответить на ваш вопрос, это плохая идея замаскировать RPC как REST? Нет. Речь идет о маскировке RPC как REST и переводе на четыре основные операции. Думаете ли вы, что это круто или нет, это отдельная история.

...