Categorias
JavaScript

Fetch API: Lendo dados de uma API com JavaScript

Podemos ler dados de uma API com JavaScript usando o comando fetch(). Observe:

const json = fetch('https://jsonplaceholder.typicode.com/posts')
  .then(resposta => resposta.json())

json.then(dados=>{
  console.log(dados)
})

Observe o resultado:

Caso você queira visualizar o resultado como um arquivo de texto, substitua json() por text().

const texto = fetch('https://jsonplaceholder.typicode.com/posts')
  .then(resposta => resposta.text())

texto.then(dados=>{
  console.log(dados)
})

Observe o resultado:

POST

O exemplo acima funciona para uma requisição do tipo GET. Entretanto, para realizar um consumo de API por meio do método HTTP POST é necessário informar parâmetros complementares na requisição com fetch(). Na prática, o comando ficará da seguinte forma:

fetch(url, config)

sendo que config corresponde a um objeto no formato JSON com os parâmetros de configuração. Observe um exemplo prático:

const url = "..."  // endereço público da API

const parametros = {
  "inicio": 0,
  "fim": 50,
  "limite": 50
}

const config = {
  method: "POST",
  headers: {"Content-type": "application/json; charset=UTF-8"},
  body: JSON.stringify(parametros),
}

const dados = fetch(url, config)
  .then(response => response.json());

dados.then(dado => {
  console.log(dado);
});

Por Diego Mariano

Doutor em Bioinformática pela Universidade Federal de Minas Gerais com atuação na área de ciência de dados e aprendizado de máquina aplicados ao aperfeiçoamento de enzimas usadas na produção de biocombustíveis. Mestre em Bioinformática, também pela UFMG, atuando na área de desenvolvimento de sistemas Web para montagem de genomas. Atualmente realiza estágio pós-doutoral no Departamento de Ciência da Computação da UFMG com foco em desenvolvimento de sistemas Web para Bioinformática, análise exploratória e visualização de dados. Tem conhecimentos nas linguagens: PHP, JavaScript, Python, R, Perl, HTML, CSS e SQL.

error

Compartilhe este post!

Facebook
YouTube
LinkedIn
Instagram