Restful APIs за non-restful интерфейсами - PullRequest
0 голосов
/ 30 июля 2010

Я пытаюсь найти соответствующие лучшие практики / спецификации / литературу / и т.д. к общей проблеме использования restful API (скажем, стандартного приложения Rails) за ненасыщенным фасадом, таким как XMPP API или канал websockets.

Например, у меня есть спокойное Rails-приложение, и я хочу предоставить доступный только для чтения асинхронный интерфейс. Это довольно просто: приложение Rails отправляет на канал Pubisub Redis, который, в свою очередь, используется в файле node.js и отправляется на канал веб-сокета (1). Теперь, как мне лучше сделать чтение / запись этого асинхронного API? Я думаю о клиенте, отправляющем на сервер через канал веб-сокетов, что в основном будет означать сериализованные http-запросы или легкие полезные нагрузки в кодировке json, которые, в свою очередь, будут отправляться в очередь Resque, а затем будут анализироваться из основного приложения но я хотел бы знать, есть ли предыдущие работы / спецификации / архитектуры, на которые я могу опираться, или просто более элегантные подходы, которые я мог бы не заметить.

(1) Очевидно, что вы могли бы заменить 'websockets' на 'xmpp', и общая проблема, релевантные приложения за интерфейсами без перегрузки, все равно будет применима.

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 13 августа 2010

Я не уверен, что на самом деле есть какая-то разница, кроме метода вызова / ответа.

Например, в веб-мире все вызовы интерфейса REST обычно выполняются из браузера, где любое отслеживание состояния выполняется на стороне сервера, как при работе с веб-клиентом. Таким образом, клиентский интерфейс обычно отправляет много данных (прямо или косвенно через cookie), чтобы позволить серверу восстановить контекст вызова.

Когда вызов происходит через XMPP (bosh или direct) или через Websockets, вам нужно будет сделать то же самое, потому что клиент будет общаться с промежуточным звеном, компонентом XMPP или ботом, который получает разделы, составляющие запрос, собирая любое сохраненное состояние, а затем передать его в REST.

В самой основной форме бот / компонент XMPP просто примет входящий раздел, переведет его в вызов REST, сделает этот вызов и затем упакует результат.

...