A Fetch API é uma tecnologia web moderna que permite aos programadores fazer pedidos de rede de forma simples e eficiente. Esta API foi concebida como sucessora do antigo XMLHttpRequest e oferece uma forma mais flexível e intuitiva de interagir com servidores. A Fetch API é utilizada particularmente em aplicações web, onde permite obter e enviar dados de forma assíncrona, o que melhora a experiência de utilização ao tornar as aplicações mais reativas e dinâmicas.
A Fetch API funciona devolvendo uma Promise, o que permite aos programadores tratar operações assíncronas com maior facilidade e clareza, particularmente em combinação com async/await. Isto permite escrever código simultaneamente mais legível e mais fácil de manter. Com a Fetch API, os programadores podem facilmente tratar pedidos e respostas HTTP, o que faz dela uma ferramenta central no desenvolvimento web moderno, onde uma troca de dados rápida e eficiente é crucial para uma boa experiência de utilização.
A Fetch API é uma tecnologia web moderna que permite a comunicação assíncrona entre cliente e servidor utilizando JavaScript. Permite aos programadores obter e enviar dados de forma eficiente e flexível, o que melhora a experiência de utilização ao atualizar dinamicamente o conteúdo web sem recarregar a página inteira. A Fetch API trata também os pedidos e as respostas de rede de uma forma mais legível e fácil de manter do que tecnologias mais antigas como o XMLHttpRequest.
Mais sobre Fetch API
A Fetch API é uma tecnologia web moderna que permite uma comunicação de rede simples e eficiente em aplicações web. Permite aos programadores fazer pedidos HTTP a servidores para obter ou enviar dados, o que é essencial para aplicações web dinâmicas que exigem informação atualizada de fontes externas. A Fetch API foi concebida para ser mais flexível e poderosa do que o antigo XMLHttpRequest, o que faz dela a escolha preferida de muitos programadores. Está disponível em todos os navegadores modernos e também em runtimes do lado do servidor, como o Node.js (versão 18 e posteriores), o Deno e o Bun.
Tecnicamente, a Fetch API baseia-se em Promises, o que permite tratar operações assíncronas de forma mais clara. Quando é enviado um pedido fetch, este devolve um objeto Promise que é cumprido com um objeto Response quando o servidor responde, ou rejeitado com um erro se o pedido não puder ser concluído, por exemplo devido a uma falha de rede. Uma resposta com um estado de erro HTTP, como 404, continua a cumprir a Promise. Esta abordagem baseada em Promises facilita a escrita de código limpo e fácil de manter, capaz de tratar tanto pedidos bem-sucedidos como falhados.
A Fetch API pode ser utilizada em vários cenários diferentes, cada um suportando diferentes tipos de interação de rede:
Pedidos GET: Esta é a utilização mais comum da Fetch API, em que são obtidos dados de um servidor. Por exemplo, uma aplicação web pode utilizar um pedido GET para obter uma lista de produtos de uma loja online. Esta funcionalidade é essencial para atualizar a interface de utilizador com a informação mais recente do servidor.
Pedidos POST: A Fetch API pode também ser utilizada para enviar dados para um servidor, normalmente com um pedido POST. Isto é útil quando um utilizador submete um formulário e os dados têm de ser guardados numa base de dados. Os pedidos POST podem também ser utilizados para criar novos recursos no servidor.
Tratamento de respostas: A Fetch API permite tratar a resposta do servidor de forma flexível. Os programadores podem facilmente ler a resposta como texto, JSON ou até como um blob binário, consoante as necessidades da aplicação. Isto permite adaptar o comportamento da aplicação com base nos dados recebidos.
Um dos maiores pontos fortes da Fetch API é a sua capacidade de tratar operações assíncronas de forma mais intuitiva. Utilizando Promises, os programadores podem escrever código mais fácil de compreender e manter, o que reduz a complexidade de tratar vários pedidos de rede em simultâneo. A Fetch API funciona também dentro das regras de CORS (Cross-Origin Resource Sharing) do navegador, que permitem pedidos a outros domínios quando o servidor o autoriza explicitamente.
A flexibilidade e o design moderno da Fetch API fazem dela uma ferramenta importante para os programadores web. Não só é mais fácil de utilizar do que as tecnologias mais antigas, como também permite construir aplicações web mais reativas e interativas. Utilizando a Fetch API, os programadores podem criar aplicações que proporcionam uma melhor experiência de utilização, garantindo que os dados estão atualizados e disponíveis quando o utilizador precisa deles.
Na prática, a Fetch API tornou-se a forma padrão de fazer pedidos de rede em aplicações web. É utilizada em tudo, desde sites simples que exigem atualizações periódicas de dados a single-page applications complexas que exigem comunicação constante com servidores. A Fetch API permite construir aplicações simultaneamente rápidas e fiáveis, o que é crucial numa altura em que os utilizadores esperam acesso imediato à informação.
Em resumo, a Fetch API é uma tecnologia que combina simplicidade, flexibilidade e design moderno numa solução que torna a comunicação de rede mais intuitiva e eficiente para os programadores web. A sua capacidade de tratar operações assíncronas de forma elegante faz dela uma ferramenta central no desenvolvimento web moderno, onde uma troca de dados rápida e fiável é essencial.
Perguntas frequentes sobre Fetch API
O que é a Fetch API e em que difere do XMLHttpRequest?
A Fetch API é uma API web moderna que proporciona uma forma mais flexível e poderosa de fazer pedidos de rede em JavaScript. Foi concebida como sucessora da antiga tecnologia XMLHttpRequest e oferece uma sintaxe mais intuitiva e legível baseada em Promises. A Fetch API permite fazer pedidos HTTP assíncronos a servidores e tratar as respostas de forma mais estruturada.
Uma das diferenças significativas entre a Fetch API e o XMLHttpRequest é que a Fetch API devolve Promises, o que facilita o trabalho com código assíncrono sem depender de funções de callback. Isto resulta em código mais limpo e fácil de manter, especialmente quando várias operações assíncronas são tratadas em sequência.
Além disso, a Fetch API oferece uma forma mais abrangente e flexível de tratar respostas HTTP, incluindo melhor suporte para dados em streaming e para o tratamento de diferentes tipos de conteúdo. Enquanto o XMLHttpRequest exige mais passos para configurar e tratar pedidos, a Fetch API permite alcançar os mesmos resultados com menos linhas de código e uma abordagem mais moderna. No entanto, o XMLHttpRequest continua a oferecer eventos nativos de progresso de envio, que o fetch não tem.
Em comparação com o XMLHttpRequest, que pode ser mais complexo e menos intuitivo, a Fetch API é uma solução mais moderna concebida para responder às necessidades atuais do desenvolvimento web, onde o foco está na simplicidade e na eficiência. A Fetch API é, por isso, a escolha preferida de muitos programadores que pretendem escrever código mais eficiente e preparado para o futuro.
Como é que a Fetch API trata operações assíncronas em JavaScript?
A Fetch API em JavaScript foi concebida para tratar operações assíncronas devolvendo um objeto Promise, que representa uma operação que será concluída no futuro. Quando é enviado um pedido fetch, este começa a obter o recurso da rede, e o JavaScript continua a executar outras tarefas enquanto espera que o pedido termine.
Quando o pedido fetch termina, o objeto Promise associado é cumprido ou rejeitado. É cumprido sempre que o servidor devolve uma resposta, seja qual for o código de estado, e só é rejeitado se o pedido falhar, por exemplo devido a um erro de rede ou a um pedido cancelado. Isto permite aos programadores definir o que deve acontecer quando os dados estão disponíveis, utilizando métodos como .then() e .catch() para tratar o sucesso e a falha, respetivamente, ou a sintaxe equivalente async/await. Este padrão assíncrono mantém a aplicação reativa e capaz de tratar várias tarefas ao mesmo tempo sem ficar bloqueada por pedidos de rede.
Em comparação com tecnologias mais antigas como o XMLHttpRequest, que exigem um tratamento mais complexo da assincronia, a Fetch API oferece uma abordagem mais moderna e simplificada para trabalhar com pedidos de rede em JavaScript, o que facilita aos programadores escrever código limpo e fácil de manter.
Que vantagens oferece a Fetch API em relação a métodos mais antigos de fazer pedidos HTTP?
A Fetch API oferece uma abordagem moderna e eficiente para tratar pedidos HTTP em aplicações web, combinando três vantagens centrais:
- Sintaxe simplificada: A Fetch API utiliza uma sintaxe mais moderna e legível baseada em Promises, o que torna o código mais fácil de escrever e compreender do que com métodos mais antigos como o XMLHttpRequest. Isto reduz a complexidade e torna o código mais fácil de manter, pois as operações assíncronas podem ser tratadas sem funções de callback.
- Suporte integrado para funcionalidades modernas: A Fetch API suporta nativamente muitas funcionalidades web modernas, como dados em streaming, o tratamento de CORS (Cross-Origin Resource Sharing) e a possibilidade de cancelar pedidos com o AbortController. Isto permite aos programadores construir aplicações mais avançadas e reativas sem recorrer a bibliotecas de terceiros ou a soluções alternativas complexas.
- Separação clara dos tipos de erro: A Fetch API distingue claramente entre falhas de rede e respostas de erro HTTP. A Promise só é rejeitada quando o próprio pedido falha, enquanto os estados de erro HTTP, como 404 ou 500, chegam como respostas normais que podem ser verificadas com response.ok. O XMLHttpRequest comporta-se de forma semelhante, mas sinaliza os erros através de eventos separados, o que torna o fluxo mais difícil de seguir.
A combinação de uma sintaxe simplificada, suporte integrado para funcionalidades modernas e um tratamento de erros claro faz da Fetch API uma ferramenta poderosa para programadores que pretendem construir aplicações web mais eficientes e fáceis de manter. Quando são necessárias mais funcionalidades integradas, como interceptors e conversão automática de JSON, alguns programadores escolhem antes a biblioteca Axios.
Como se podem tratar erros e exceções ao utilizar a Fetch API?
Ao trabalhar com a Fetch API em JavaScript, é importante tratar corretamente erros e exceções para ter uma aplicação robusta e fácil de utilizar. Seguem-se alguns métodos para tratar eficazmente erros e exceções ao utilizar a Fetch API:
- Erros de rede: A Fetch API devolve uma Promise que só é rejeitada em caso de erros de rede. Isto significa que tem de ser utilizado
catch()para tratar situações em que há problemas com a ligação de rede, como quando o servidor não pode ser contactado. - Códigos de estado HTTP: A Fetch API não trata os códigos de estado de erro HTTP (como 404 ou 500) como erros. É necessário verificar manualmente
response.okpara identificar esses erros e tratá-los adequadamente. - Erros de análise de JSON: Quando a resposta é convertida em JSON, podem ocorrer erros de análise se os dados não forem JSON válido. Isto pode ser tratado aguardando
response.json()dentro de um blocotry-catch. - Tempos limite: A Fetch API não tem uma opção de tempo limite própria. Um tempo limite pode ser implementado com um AbortController ou com AbortSignal.timeout(), que cancela efetivamente o pedido; uma abordagem baseada em
Promise.race()apenas deixa de esperar pelo resultado, enquanto o próprio pedido continua. - Feedback ao utilizador: Para melhorar a experiência de utilização, os utilizadores devem receber feedback quando ocorrem erros, como uma mensagem ou uma notificação que explique o problema e os eventuais passos seguintes.
Globalmente, tratar corretamente erros e exceções ao utilizar a Fetch API pode melhorar tanto a estabilidade como a experiência de utilização de uma aplicação. Implementar estes métodos ajuda a aplicação a lidar com elegância com problemas imprevistos.
Como se enviam dados para um servidor com a Fetch API?
Para enviar dados com a Fetch API, é passado um objeto de opções adicional quando se chama fetch(). Este define o método, como POST ou PUT, e os dados são colocados no campo body.
Quando se envia JSON, o objeto é convertido em texto com JSON.stringify() e o cabeçalho Content-Type é definido como application/json, para que o servidor saiba como ler os dados. Os dados de formulários e os ficheiros podem ser enviados com um objeto FormData, que o navegador envia automaticamente como multipart/form-data. A resposta é tratada como nas outras chamadas, e é importante verificar a propriedade ok da resposta, porque o fetch não gera um erro para códigos de estado HTTP como 400 ou 500.
Que considerações de segurança devem ser tidas em conta ao utilizar a Fetch API?
A Fetch API é um método moderno e flexível de fazer pedidos de rede em aplicações web, mas as considerações de segurança exigem atenção ao utilizar esta tecnologia. A Fetch API foi concebida para ser simples e intuitiva, mas exige que os programadores assumam a responsabilidade de garantir que os dados enviados e recebidos são tratados corretamente para proteger contra potenciais ameaças de segurança.
Uma das principais considerações de segurança ao utilizar a Fetch API é o tratamento do CORS (Cross-Origin Resource Sharing). O navegador aplica a same-origin policy ao fetch, o que significa que os pedidos a uma origem diferente daquela a partir da qual a aplicação foi carregada exigem que o servidor envie os cabeçalhos CORS corretos antes de a resposta poder ser lida. O CORS é um relaxamento controlado da same-origin policy e não um mecanismo de proteção em si: uma configuração demasiado permissiva pode expor recursos a sites não autorizados. A proteção contra Cross-Site Scripting (XSS) e Cross-Site Request Forgery (CSRF) exige medidas separadas, como a codificação da saída, uma Content Security Policy, cookies SameSite e tokens CSRF.
Além disso, é importante validar e sanitizar todos os dados enviados e recebidos através da Fetch API. Isto inclui garantir que as entradas dos utilizadores não contêm código malicioso que possa ser explorado para comprometer a aplicação ou os seus utilizadores. A validação tem de ocorrer sempre também no servidor, pois as verificações no navegador podem ser contornadas. Implementando verificações rigorosas de validação e sanitização, os programadores podem minimizar o risco de violações de segurança.
Em comparação com tecnologias mais antigas como o XMLHttpRequest, a Fetch API oferece uma abordagem mais moderna aos pedidos de rede, mas continua a exigir que os programadores prestem atenção às práticas de segurança. Compreendendo e implementando as medidas de segurança necessárias, os programadores podem garantir que as suas aplicações são robustas e resistentes a potenciais ameaças.
Fetch API para manequins
A Fetch API é uma tecnologia inteligente que permite a um computador ou telemóvel obter dados da internet de forma simples e eficiente. Imagina que queres saber como vai estar o tempo amanhã. A Fetch API funciona como um ajudante invisível que vai à internet, encontra a informação necessária num servidor meteorológico e a traz de volta para o dispositivo, para que possa ser mostrada numa app ou num site. Tudo acontece rapidamente, sem ser preciso mais do que abrir a app ou a página. A Fetch API permite às apps e aos sites atualizar a informação em tempo real, para que os dados mais recentes estejam sempre à mão.