Pergunta

Com os serviços da Web, é considerado uma boa prática em lote de várias chamadas de serviço em uma mensagem para reduzir uma série de chamadas remotas. Existe alguma maneira de fazer isso com serviços RESTful?

Foi útil?

Solução

Não vejo como as solicitações de lotes fazem algum sentido em repouso. Como o URL em um serviço baseado em REST representa a operação para executar e os dados sobre os quais executá-lo, fazer solicitações de lote quebraria seriamente o modelo conceitual.

Uma exceção seria se você estivesse realizando a mesma operação nos mesmos dados várias vezes. Nesse caso, você pode passar em vários valores para um parâmetro de solicitação ou codificar essa repetição no corpo (no entanto, isso realmente funcionaria para put ou post). A API Gliffy Rest suporta adicionar vários usuários à mesma pasta via

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

que é essencialmente:

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

Como o outro comentarista apontou, os resultados da paginação de um GET podem ser feitos por meio de parâmetros de solicitação:

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

E se O serviço restante suporta.

Outras dicas

Se você realmente precisar em lote, o HTTP 1.1 suporta um conceito chamado HTTP Pipelinining que permite enviar várias solicitações antes de receber uma resposta. Confira aqui

Eu concordo com Darrel Miller. O HTTP já suporta Pipelining HTTP, além de suporta HTTP manter vivo, permitindo transmitir várias operações HTTP simultaneamente pelo mesmo soquete para evitar ter que esperar pelas respostas antes de transmitir novas solicitações para o servidor etc.

Portanto, com a Pipelining HTTP e mantenha -se vivo, você obtém o efeito de lotes enquanto usa a mesma API REST subjacente - para que geralmente não há necessidade de outra API REST para o seu serviço

A equipe da Astoria fez bom uso de MIME de várias partes para enviar um lote de chamadas. Diferente da pipelining como a mensagem de várias partes pode inferir a intenção de uma operação atômica. Parece bastante elegante.

Claro que existe uma maneira, mas exigiria suporte ao lado do servidor. Não existe um tamanho único mágico que se encaixe em toda a metodologia que eu conheço.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top