Uma das tarefas mais importantes que um programador precisa resolver ao desenvolver projetos da Web é organizar a troca de dados entre as partes cliente e servidor desses projetos. Pode ser assim: o usuário pressiona um determinado botão na página aberta no navegador, o sistema responde com uma solicitação ao servidor, após o que o servidor envia à página os dados solicitados. Para exibir esses dados na página, sem recarregá-los, eles são processados, após o que a página é atualizada e o usuário recebe o que precisa.

A tecnologia AJAX é a pedra angular dessa interação do sistema, no aplicativo em que uma instância do objeto
XMLHttpRequest
é usada. Para facilitar o trabalho dos programadores com o AJAX e o
XMLHttpRequest
, foram criadas bibliotecas especializadas que fornecem aos desenvolvedores interfaces convenientes, eliminando a necessidade de usar mecanismos de baixo nível.
O material, cuja tradução publicamos hoje, é dedicado à análise de cinco ferramentas populares para trabalhar com HTTP: Axios, Request, Superagent, Fetch e Supertest.
Axios
A biblioteca
Axios para executar solicitações HTTP é baseada em promessas. É adequado para uso em Node.js e aplicativos de navegador. A biblioteca suporta todos os navegadores modernos, incluindo o IE8 +.
▍ Pontos fortes
- Funciona no ambiente Node.js e em navegadores.
- Suporta promessas.
- Permite executar e cancelar solicitações.
- Permite definir o tempo limite da resposta.
- Oferece suporte à proteção contra ataques XSRF.
- Permite interceptar solicitações e respostas.
- Suporta indicação do progresso do upload de dados.
- Amplamente utilizado em projetos baseados em React e Vue.
▍ Fraquezas
- A biblioteca é bastante difícil de usar.
Superagente
A biblioteca
Superagent , como o Axios, é adequada para Node.js e navegadores modernos. Ele fornece ao desenvolvedor uma API simples e compreensível, conveniente para trabalhar.
Para executar uma solicitação HTTP usando Superagent, basta chamar o método de objeto de
request
apropriado:
request .get('') .then(res => log(res)) .catch(err => log(err))
▍ Pontos fortes
- Suporta plugins.
- Configurável.
- Possui uma interface agradável para fazer solicitações HTTP.
- Suporta encadeamento de várias chamadas para concluir consultas.
- Funciona no ambiente Node.js e em navegadores.
- Suporta exibição de progresso para upload e download de dados.
- Suporta mecanismo de codificação de transferência em pedaços.
- Suporta retornos de chamada.
- Muitos plugins foram desenvolvidos para esta biblioteca.
▍ Fraquezas
- Tem um tipo de API que não segue nenhum padrão.
Pedido
A biblioteca
Request , em comparação com as ferramentas anteriores revisadas, é uma ferramenta simplificada para executar solicitações HTTP. Ao usar esta biblioteca, você precisa escrever menos código do que quando trabalha com outras bibliotecas. Ele não usa promessas, mas se você precisar desse recurso, poderá usar a biblioteca
Request-Promise , que implementa um wrapper em torno da biblioteca Request e permite trabalhar com promessas.
▍ Pontos fortes
▍ Fraquezas
- A biblioteca não usa promessas.
Buscar
A busca não é uma biblioteca, ao contrário das outras ferramentas abordadas nesta revisão. Esta é uma API do navegador padrão, uma alternativa ao
XMLHttpRequest
.
▍ Pontos fortes
- Flexibilidade e facilidade de uso.
- O uso de promessas, que evitam o "inferno de retornos".
- Suporte por todos os navegadores modernos.
- Seguindo a abordagem de solicitação-resposta.
- Sintaxe simples e agradável.
- Suportado no React Native.
▍ Fraquezas
- Não funciona em um ambiente de servidor.
- Ele não implementa alguns recursos disponíveis nas bibliotecas HTTP, como o cancelamento de uma solicitação.
- Não contém suporte interno para parâmetros padrão, como modo de solicitação, cabeçalhos, credenciais.
Supertest
A biblioteca
Supertest é baseada na biblioteca Superagent. Ele foi projetado para testar servidores HTTP criados com base no Node.js. O Supertest fornece aos desenvolvedores acesso à sua própria API e à API de baixo nível fornecida pela biblioteca Superagent.
▍ Pontos fortes
- Possui uma API conveniente.
- Simplifica a construção de testes HTTP.
- Ele pode ser usado em conjunto com bibliotecas para testar projetos como o Chai.js e o Mocha .
▍ Fraquezas
- Não funciona em navegadores.
Sumário
Neste artigo, examinamos várias ferramentas populares para trabalhar com HTTP que são úteis para desenvolvedores de JS que criam aplicativos que usam tecnologias de navegador e plataformas Node.js. Ao selecionar uma base para o subsistema HTTP de um determinado projeto, é recomendável que você tente primeiro várias ferramentas que pareçam adequadas e depois tome a decisão final.
Caros leitores! Quais bibliotecas HTTP você usa?