Дозировка в ОТДЫХ - PullRequest
       12

Дозировка в ОТДЫХ

5 голосов
/ 21 сентября 2008

С помощью веб-служб рекомендуется объединять несколько вызовов служб в одно сообщение, чтобы сократить количество удаленных вызовов. Есть ли способ сделать это с помощью служб RESTful?

Ответы [ 5 ]

4 голосов
/ 22 сентября 2008

Я не понимаю, как пакетные запросы имеют смысл в REST. Поскольку URL-адрес в службе на основе REST представляет операцию, которую необходимо выполнить, и данные, для которых она выполняется, выполнение пакетных запросов серьезно нарушило бы концептуальную модель.

Исключением может быть то, что вы выполняете одну и ту же операцию с одними и теми же данными несколько раз. В этом случае вы можете либо передать несколько значений для параметра запроса, либо закодировать это повторение в теле (однако это действительно будет работать только для PUT или POST). Gliffy REST API поддерживает добавление нескольких пользователей в одну папку с помощью

POST /folders/ROOT/the/folder/name/users?userId=56&userId=87&userId=45

что по сути:

PUT /folders/ROOT/the/folder/name/users/56
PUT /folders/ROOT/the/folder/name/users/87
PUT /folders/ROOT/the/folder/name/users/45

Как указал другой комментатор, результаты подкачки из GET могут быть получены через параметры запроса:

GET /some/list/of/resources?startIndex=10&pageSize=50

, если служба REST поддерживает это.

4 голосов
/ 24 сентября 2008

Если вам действительно нужно выполнить пакетную обработку, Http 1.1 поддерживает концепцию, называемую HTTP Pipelining, которая позволяет отправлять несколько запросов перед получением ответа. Проверьте это здесь

3 голосов
/ 13 января 2009

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

3 голосов
/ 29 сентября 2008

Я согласен с Даррелом Миллером. HTTP уже поддерживает конвейеризацию HTTP, плюс поддержка HTTP поддерживает работу, позволяя вам одновременно выполнять потоковую передачу нескольких HTTP-операций по одному и тому же сокету, чтобы избежать необходимости ждать ответов перед передачей новых запросов на сервер и т. Д.

Таким образом, благодаря конвейерной передаче HTTP и поддержанию активности вы получаете эффект пакетной обработки при использовании того же базового API REST - поэтому обычно нет необходимости в другом REST API для вашей службы

0 голосов
/ 21 сентября 2008

Конечно, есть способ, но для этого потребуется поддержка на стороне сервера. Не существует волшебного размера, подходящего для всех известных мне методик.

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