Quando se trata de lidar com solicitações HTTP em JavaScript, Axios e Fetch há muito tempo são as ferramentas mais utilizadas. No entanto, há uma alternativa poderosa e moderna que os desenvolvedores devem considerar — Ky. Leve e repleto de recursos avançados, Ky torna o tratamento de solicitações HTTP mais fácil e eficiente. Neste artigo, explicaremos por que Ky se destaca, com comparações diretas com Axios e Fetch API.
Axios é um cliente HTTP popular e baseado em promessas para JavaScript. Ele simplifica as solicitações HTTP, oferecendo recursos como análise automática de JSON, interceptadores de solicitação e tempos limite personalizados. No entanto, o tamanho do arquivo pode se tornar uma desvantagem, especialmente para aplicativos leves.
Fetch é uma API de navegador integrada para fazer solicitações HTTP. Embora seja amplamente utilizado, o Fetch tem algumas limitações: não inclui tratamento de erros padrão ou novas tentativas integradas, exigindo que os desenvolvedores escrevam código adicional até mesmo para funcionalidades básicas.
Ky é uma alternativa leve (157 ~ KB) ao Axios e Fetch, construída sobre o Fetch, mas oferecendo uma API mais rica em recursos. Com novas tentativas integradas, tratamento de erros simplificado e ganchos de solicitação personalizáveis, Ky atinge um equilíbrio entre simplicidade e poder.
Por que escolher Ky?
Isso torna Ky uma ótima escolha para aplicações onde o desempenho e o tamanho do pacote são críticos. Apesar de ser leve, Ky não sacrifica recursos essenciais como novas tentativas e tratamento de erros.
A sintaxe do Ky é tão direta quanto a do Fetch, mas oferece mais poder integrado. Por exemplo, fazer uma solicitação GET com Ky é tão fácil quanto:
import ky from 'ky'; const data = await ky.get('https://api.example.com/data').json();
Por que isso é melhor que Fetch?
Ky vem com suporte integrado para novas tentativas, um recurso crucial para lidar com condições de rede não confiáveis. Axios também oferece funcionalidade de nova tentativa, mas você precisa usar um plugin adicional ou configurá-lo você mesmo. Por outro lado, Ky fornece esse recurso por padrão com configuração zero.
await ky.get('https://api.example.com/data', { retry: 2 });
Neste exemplo, Ky tentará novamente a solicitação até 2 vezes em caso de falha, sem qualquer configuração adicional.
Um dos recursos mais atraentes do Ky é seu sistema de hooks, especialmente beforeRequest e afterResponse. Esses ganchos oferecem controle total sobre suas solicitações e respostas HTTP sem a necessidade de middleware externo, que o Axios geralmente exige.
Com Ky, você pode modificar facilmente solicitações de saída usando o gancho beforeRequest. Se você precisa adicionar tokens de autenticação ou modificar cabeçalhos, beforeRequest torna isso fácil.
Exemplo : Adicionando um token de autorização a cada solicitação.
ky.extend({ hooks: { beforeRequest: [ request => { const token = localStorage.getItem('authToken'); request.headers.set('Authorization', `Bearer ${token}`); } ] } });
Isso reduz o código repetitivo, tornando mais fácil lidar com a autenticação globalmente.
Com o gancho afterResponse, você pode manipular as respostas em todo o seu aplicativo. Este gancho é especialmente útil para lidar com novas tentativas em códigos de status específicos, como atualizar tokens expirados.
Exemplo: atualização automática de um token expirado em uma resposta 401 não autorizada.
ky.extend({ hooks: { afterResponse: [ async (request, options, response) => { if (response.status === 401) { const newToken = await refreshAuthToken(); request.headers.set('Authorization', `Bearer ${newToken}`); return ky(request); } } ] } });
Com esta configuração, você pode atualizar tokens perfeitamente sem duplicar a lógica em seu aplicativo.
Axios fornece tratamento decente de erros por meio de interceptadores, mas falta a simplicidade que Ky oferece imediatamente. O Axios geralmente requer lógica personalizada para novas tentativas e tratamento de código de status de erro.
O tratamento de erros do Fetch é limitado por padrão. Ele não gera erros para códigos de status HTTP como 404 ou 500, forçando os desenvolvedores a verificar o status das respostas manualmente.
Ky é excelente no tratamento de erros. Ele gera erros automaticamente para respostas HTTP diferentes de 2xx e fornece funcionalidade de nova tentativa para solicitações com falha, sem a necessidade de código adicional. Isso torna Ky uma solução robusta para lidar com erros com elegância.
try { const data = await ky.get('https://api.example.com/data').json(); } catch (error) { console.error('Request failed:', error); }
Ky envolve toda a solicitação em uma promessa, gerando automaticamente um erro se o código de status da resposta indicar uma falha, o que simplifica a depuração.
Vamos testar Ky com alguns exemplos práticos que mostram sua simplicidade e poder.
const response = await ky.get('https://api.example.com/items').json(); console.log(response);
Ky lida automaticamente com a análise JSON e gera um erro para qualquer código de status diferente de 2xx, o que o Fetch não faz.
const response = await ky.post('https://api.example.com/create', { json: { name: 'Ky' }, retry: 3 }).json(); console.log(response);
Ky tenta novamente a solicitação POST até 3 vezes se ela falhar, oferecendo melhor confiabilidade do que Fetch ou Axios sem configuração extra.
Se você está procurando uma solução moderna , leve e repleta de recursos para fazer solicitações HTTP em JavaScript, Ky é uma excelente escolha. Embora Axios e Fetch ainda sejam amplamente usados, Ky oferece vantagens importantes, como novas tentativas automáticas, ganchos para personalizar solicitações e respostas e melhor tratamento de erros padrão.
Para desenvolvedores que priorizam simplicidade , desempenho e controle sobre solicitações HTTP, definitivamente vale a pena considerar Ky como uma ferramenta primária em seus projetos JavaScript.
Para mais exemplos e informações detalhadas da API, você pode visitar https://www.npmjs.com/package/ky.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3