Vamos falar de fetch…!?


Fetch API é a ferramenta de requisições que veio para desbancar de vez o XMLHttpRequest, agora nós podemos fazer requisições sem precisar escrever muitas linhas de código, criar funções para facilitar o uso do XMLHttpRequest ou até mesmo importar outras bibliotecas, como jQuery para usar o $.ajax().

Como fazer o fetch com o JavaScript

Fazer requisições com fetch é muito simples não tem segredo, nós só precisamos passar uma string por parâmetro, que será a nossa url de busca, esse é o único parâmetro obrigatório. O método fetch() retorna uma Promise que retorna uma Response, como, nesse exemplo, queremos recuperar um json então utilizamos o método json(), que é um método que define como o conteúdo do retorno deve ser tratado (veja mais métodos).

fetch("https://pokeapi.co/api/v1/pokemon?limit=20&offset=1")
    .then(response => response.json())

(Nesse exemplo usaremos a api https://pokeapi.co/api/v1/, apenas para ilustração)

Podemos inserir também um catch, para que possamos pegar os erros, funciona do mesmo jeito que o then

fetch("https://pokeapi.co/api/v1/pokemon?limit=20&offset=1")
    .then(response => response.json())
    .catch(error => console.error("Erro:" + error))

Depois, é só escrever o seu código

fetch("https://pokeapi.co/api/v1/pokemon?limit=20&offset=1")
    .then(response => response.json())
    .catch(error => console.error("Erro:" + error))
    .then(response => {
        let list = document.getElementById('pokemons');
        let listItems = "";
        for (let obj in response.objects) {
            listItems += `<li>${response.objects[obj].name}</li>`;
        }
        list.innerHTML = listItems;
    });

O fetch aceita também um segundo parâmetro, nele passamos um objeto para configurar a requisição, podemos passar método da requisição, cabeçalho, corpo e etc.

fetch("https://urldarequisicao.com/v1",{
    method: /* GET / POST / PUT / DELETE / HEAD */,
    headers: /*cabeçalho*/, 
    body: /*corpo da requisição*/,
    referrer: /*referência da requisição*/,
    mode: /*cors / no-cors / same-origin*/,
    credentials: /*indica se os cookies devem ser enviados junto com a requisição*/,
    redirect: /*follow / error / manual*/,
    integrity : /*valor de integridade da fonte*/,
    cache : /*default / reload / no-cache*/
}).then(response => response.json())

Fontes:

https://www.treinaweb.com.br/blog/requisicoes-ajax-no-javascript-com-a-fetch-api/

https://developer.mozilla.org/pt-BR/docs/Web/API/Fetch_API

Deixe um comentário