A versão mais recente do restQL, uma linguagem de consulta de microsserviços, traz novos recursos importantes, incluindo a agregação de conteúdo, o suporte a outros métodos HTTP e funcionalidades de auto-recuperação, assim como uma versão para aplicações node.js. Além disso, melhorias de desempenho a tornaram duas vezes mais rápida que a versão anterior.
Não há alterações de quebra da versão V2 para a V3. Desse modo, os usuários podem atualizar sem nenhum receio. O código do projeto está disponível sob licença MIT.
O RestQL destina-se a simplificar o código de front-end que precisa consultar vários microsserviços. Embora este tipo de arquitetura possa tornar os sistemas de backend mais fáceis de serem suportados e mantidos, uma consequência comum (e não intencional) é a complexidade adicional que é incluída na camada de front-end. O RestQL reduz a complexidade da orquestração de chamadas para vários microsserviços, e utiliza a funcionalidade nativa de cache dos navegadores, graças ao uso de chamadas HTTP padrão.
Uma das características determinantes do RestQL têm sido as chamadas paralelas automáticas a recursos separados. No entanto, as respostas individuais também eram separadas em versões anteriores, obrigando o desenvolvedor a consolidar objetos relacionados, como por exemplo um cliente com vários pedidos. Na mais recente versão, o novo operador 'in' permite especificar a estrutura de agregação no início da consulta, criando um único resultado combinado.
A versão mais recente proporciona maior resiliência do servidor restQL, que se posiciona entre os clientes e as APIs de microsserviços. Quando o sistema detecta que está ficando sobrecarregado, introduz uma forma de contrapressão (backpressure). Uma opção de configuração define o limite para o tempo de processamento aceitável. Se esse limite for atingido, o sistema passa a retornar respostas HTTP 507 (armazenamento insuficiente) para algumas solicitações. Ao mesmo tempo permite que parte das solicitações continuem a ser executadas com sucesso.
Esse padrão de retornar respostas com falha exige que o aplicativo inclua alguma lógica de repetição de solicitações. Ricardo Mayerhofer, um dos criadores do RestQL, disse que é uma prática implementada geralmente através de uma malha de serviços (service mesh), como o Istio. "Aconselhamos o uso de malhas de serviço juntamente com o RestQL, devido à sua natureza HTTP e REST, o funcionamento é excelente, mesmo com malhas de serviço, tanto para as consultas recebidas como as enviadas. Como é típico haver um algoritmo de auto-escalonamento, é só questão de tempo até que novos nós sejam ativados e o restQL volte ao normal".
Versões anteriores do restQL apenas suportavam a consulta de dados, usando a palavra-chave 'from', traduzida para uma solicitação HTTP GET. A versão V3 adiciona o conjunto padrão de verbos HTTP para operações CRUD, incluindo POST, PUT e DELETE, através das palavras-chave 'to', 'into', e 'delete', respectivamente.
Além disso, os criadores do restQL perceberam que subir e manter um servidor adicional poderia se tornar uma barreira à adoção, portanto criaram um pacote npm para aplicações node, chamado @b2wdigital/restql. A página correspondente do GitHub inclui exemplos de código de implementação.
Mayerhofer descreve mais funcionalidades do restQL V3 em uma postagem. O InfoQ.com cobriu anteriormente o lançamento inicial e as origens da linguagem.