A Netflix anunciou o lançamento de três bibliotecas open source relacionadas a requisição de Batch com Ruby e Ember.js. São elas:
- Ember Batch Request (Complemento Ember JS)
- Batch Requets API (Middleware Rails)
- Batch Request Client (Cliente Ruby)
Com o processamento Batch é possível passar várias operações em uma única requisição HTTP. É possível fazer uma requisição Batch da interface de usuário da Ember e processá-la em um backend Rails? Com as bibliotecas Ember Batch Request e a Batch Request API para recuperação, é. Um array JSON de requisições HTTP é criado na interface do usuário utilizando um complemento Ember, e, em seguida, processada sequencialmente ou um paralelo na API backend por meio do Middleware Rails.
Porquê
A utilização é útil para criar m número elevado de criações/atualizações/exclusões em uma transação, devido a uma única requisição de rede. Pensanado em performance de aplicações, um dos pontos chaves é uma consulta eficiente no banco de dados. devido a uma única requisição de rede. E com estas duas bibliotecas isso é possível sem muitas dificuldades.
Uso
Na API do Rails, uma vez que a gem batch request api é adicionada, a aplicação obtém o middleware para lidar com a requisição de batch recebida da interface de usuário da Ember.
Na interface de usuário Ember, o addon ember-batch-request oferece 3 novos métodos de armazenamento para fazer requisições de batch.
Create:
this.store.batchCreate(arrayOfObjects).then((response) => { });
Update:
this.store.batchUpdate(arrayOfObjects).then((response) => { });
Delete:
this.store.batchDelete(arrayOfObjects).then((response) => { });
Além disso, a Netflix também lançou o Batch Request Client para nos auxiliar a fazer requisições de batch de outra aplicação Rails, caso você não esteja usando o Ember.js.
Batch Request Payload:
{ "requests": [ { "method": "POST", "url": "/api/v1/movies", "body": { }, { } } ] }
Batch Request Response:
[ {"status"=>200, "headers"=>{}, "response"=>{}}, {"status"=>200, "headers"=>{}, "response"=>{}} ]
Dependência
Atualmente, funciona com aplicações Rails e Ember usando a JSON API spec.
Trabalho futuro
A Netflix planeja tornar as bibliotecas JSON API spec agnósticas e adicionar mais recursos.
***