Apidog

Plataforma Colaborativa All-in-one para Desenvolvimento de API

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Como Usar Fetch para Fazer Requisições PUT no React

Aprenda a usar a API fetch para fazer requisições PUT em React. Este tutorial mostrará como atualizar dados no servidor usando hooks do React e tratar erros de forma adequada.

Miguel Oliveira

Miguel Oliveira

Updated on novembro 29, 2024

Se você é um desenvolvedor web, provavelmente sabe como é importante se comunicar com APIs e buscar dados de fontes externas. O React, uma popular biblioteca JavaScript para construir interfaces de usuário, fornece uma maneira simples e elegante de fazer isso com a Fetch API.

A Fetch API é uma interface moderna para fazer requisições HTTP a partir do navegador. Ela utiliza promessas JavaScript, que facilitam o trabalho com operações assíncronas e tornam o código mais legível. Você pode usar a Fetch API para fazer vários tipos de requisições, como GET, POST, DELETE e PUT.

Neste post do blog, iremos nos concentrar em como usar a Fetch API para fazer requisições PUT no React. Uma requisição PUT é usada para atualizar ou substituir um recurso existente em um servidor. Por exemplo, você pode querer usar uma requisição PUT para editar um post de blog, atualizar um perfil de usuário ou mudar o preço de um produto.

💡
Apidog é uma plataforma baseada na web que ajuda você a descobrir, testar e integrar APIs web com facilidade. Uma das funcionalidades que a Apidog oferece é a capacidade de gerar código cliente Fetch com um clique, com base na especificação da API que você fornecer ou selecionar. Baixe a Apidog gratuitamente e comece agora.
button

O que é uma Requisição PUT e Quando Usá-la

Uma requisição PUT é um dos quatro métodos fundamentais HTTP, junto com GET, POST e DELETE. Uma requisição PUT é usada para atualizar ou substituir um recurso existente em um servidor. O corpo da requisição geralmente contém os dados que você deseja atualizar ou substituir.

Por exemplo, suponha que você tenha um post de blog com os seguintes dados:

{
  "id": 1,
  "title": "Como Usar Fetch para Fazer Requisições GET no React",
  "content": "Neste post do blog, iremos aprender como usar a Fetch API para fazer requisições GET no React...",
  "author": "David",
  "date": "2023-01-01"
}

Se você quiser mudar o título e o conteúdo do post do blog, pode usar uma requisição PUT para enviar os novos dados ao servidor. A URL da requisição seria algo como https://example.com/api/posts/1, onde 1 é o id do post do blog. O corpo da requisição seria algo como:

{
  "title": "Como Usar Fetch para Fazer Requisições PUT no React",
  "content": "Neste post do blog, iremos aprender como usar a Fetch API para fazer requisições PUT no React..."
}

O servidor então atualizaria o post do blog com os novos dados e retornaria uma resposta com o recurso atualizado ou uma mensagem de confirmação.

Requisição PUT

Uma requisição PUT é diferente de uma requisição POST, que é usada para criar um novo recurso em um servidor. Uma requisição POST não requer um id ou uma URL específica, enquanto uma requisição PUT o requer. Uma requisição POST pode resultar em um recurso duplicado se for repetida, enquanto uma requisição PUT é idempotente, significando que não mudará o estado do servidor se for repetida.

Uma requisição PUT também é diferente de uma requisição PATCH, que é usada para atualizar parcialmente um recurso existente em um servidor. Uma requisição PATCH apenas envia os dados que precisam ser alterados, enquanto uma requisição PUT envia todos os dados que substituem o recurso original. Uma requisição PATCH é mais eficiente e flexível, mas nem todos os servidores a suportam.

Como Fazer uma Simples Requisição PUT com a Fetch API

Fazer uma requisição PUT com a Fetch API é muito fácil e direto. Você só precisa chamar o método fetch(), passar a URL de onde buscar, e fornecer um objeto de opções com o método da requisição, cabeçalhos e corpo. Em seguida, você pode manipular a resposta quando ela for resolvida.

Aqui está um exemplo de como fazer uma simples requisição PUT com a Fetch API:

// Defina os dados a serem atualizados
const data = {
  title: "Como Usar Fetch para Fazer Requisições PUT no React",
  content: "Neste post do blog, iremos aprender como usar a Fetch API para fazer requisições PUT no React..."
};

// Defina as opções da requisição
const requestOptions = {
  method: "PUT", // Especifique o método da requisição
  headers: { "Content-Type": "application/json" }, // Especifique o tipo de conteúdo
  body: JSON.stringify(data) // Envie os dados em formato JSON
};

// Faça a requisição
fetch("https://example.com/api/posts/1", requestOptions)
  .then(response => response.json()) // Analise a resposta como JSON
  .then(data => console.log(data)) // Faça algo com os dados
  .catch(error => console.error(error)); // Lide com erros

Neste exemplo, estamos atualizando um post de blog com o id 1 no servidor. Estamos enviando o novo título e conteúdo no corpo da requisição, e especificando o tipo de conteúdo como application/json. Também estamos usando o método json() para analisar a resposta como JSON, e registrando os dados no console. Se houver um erro, estamos capturando-o e registrando-o no console também.

Esta é a sintaxe básica para fazer uma requisição PUT com a Fetch API. Você pode usar essa sintaxe para fazer qualquer requisição PUT para qualquer API que a suporte. No entanto, se você estiver usando React, existem alguns passos e considerações adicionais que você precisa levar em conta.

Como Usar Hooks do React para Fazer uma Requisição PUT em um Componente Funcional

Se você estiver usando React, pode querer fazer uma requisição PUT em um componente funcional e atualizar o estado do componente quando os dados forem recebidos. Isso permite que você busque dados de uma API e os exiba na sua interface de usuário.

Para fazer isso, você pode usar hooks do React, que são funções especiais que permitem usar estado e outras funcionalidades do React em componentes funcionais. Os hooks mais comumente usados são useState e useEffect.

REact

O hook useState permite que você declare uma variável de estado e uma função para atualizá-la. O estado inicial é passado como um argumento para o hook, e o valor retornado é um array com a variável de estado e a função de atualização. Você pode usar a variável de estado para armazenar os dados que deseja exibir na interface, e a função de atualização para modificar o estado quando os dados mudarem.

O hook useEffect permite que você realize efeitos colaterais, como fazer requisições HTTP, em componentes funcionais. O primeiro argumento é uma função que é executada após o componente ser renderizado, e o segundo argumento é um array de dependências que determina quando o efeito é executado. Se você passar um array vazio, o efeito será executado apenas uma vez quando o componente for montado, semelhante ao método de ciclo de vida componentDidMount em componentes de classe.

Aqui está um exemplo de como usar hooks do React para fazer uma requisição PUT em um componente funcional:

import React, { useState, useEffect } from "react";

function App() {
  // Declare uma variável de estado para armazenar os dados
  const [data, setData] = useState(null);

  // Defina os dados a serem atualizados
  const newData = {
    title: "Como Usar Fetch para Fazer Requisições PUT no React",
    content: "Neste post do blog, iremos aprender como usar a Fetch API para fazer requisições PUT no React..."
  };

  // Defina as opções da requisição
  const requestOptions = {
    method: "PUT",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(newData)
  };

  // Use o hook useEffect para fazer a requisição
  useEffect(() => {
    // Faça a requisição
    fetch("https://example.com/api/posts/1", requestOptions)
      .then(response => response.json()) // Analise a resposta como JSON
      .then(data => setData(data)) // Atualize o estado com os dados
      .catch(error => console.error(error)); // Lide com erros
  }, []); // Passe um array vazio como segundo argumento para executar o efeito apenas uma vez

  // Retorne o JSX para renderizar
  return (
    <div className="App">
      <h1>Como Usar Fetch para Fazer Requisições PUT no React</h1>
      {data ? ( // Verifique se os dados estão disponíveis
        <div>
          <h2>{data.title}</h2> // Exiba os dados
          <p>{data.content}</p>
        </div>
      ) : (
        <p>Carregando...</p> // Exiba uma mensagem de carregamento
      )}
    </div>
  );
}

export default App;

Neste exemplo, estamos usando o hook useState para declarar uma variável de estado chamada data e uma função chamada setData para atualizá-la. O estado inicial é null, significando que ainda não há dados disponíveis.

Também estamos usando o hook useEffect para fazer a requisição PUT quando o componente é montado. Estamos usando a mesma sintaxe que antes, mas em vez de registrar os dados no console, estamos atualizando o estado com a função setData. Estamos passando um array vazio como segundo argumento para o hook useEffect, para que o efeito seja executado apenas uma vez.

Como usar async/await para fazer uma requisição PUT com a Fetch API

Async/await é uma funcionalidade do JavaScript moderno que permite escrever código assíncrono de uma maneira mais legível e concisa. Funciona com promessas, que são objetos que representam o resultado de uma operação assíncrona. Uma promessa pode ser resolvida (com um valor) ou rejeitada (com um erro).

Para usar async/await para fazer uma requisição PUT com a Fetch API, você precisa seguir os seguintes passos:

  • Defina uma função assíncrona que fará a requisição. Uma função assíncrona é uma função que retorna uma promessa. Você pode usar a palavra-chave async antes da declaração ou expressão da função.
  • Dentro da função assíncrona, use a palavra-chave await para esperar pela promessa retornada pelo método fetch(). A palavra-chave await pausa a execução da função assíncrona até que a promessa seja resolvida ou rejeitada. Em seguida, retorna o valor resolvido ou lança um erro.
  • Use a palavra-chave await novamente para esperar pela promessa retornada pelo método response.json(), que analisa o corpo da resposta como JSON e retorna outra promessa.
  • Manipule os dados ou o erro como desejar. Você pode usar blocos try...catch para capturar quaisquer erros que possam ocorrer durante a operação assíncrona.

Aqui está um exemplo de uma função assíncrona que faz uma requisição PUT com a Fetch API:

// Defina uma função assíncrona que faz uma requisição PUT
async function updatePost() {
  // Defina os dados a serem atualizados
  const data = {
    title: "Como Usar Fetch para Fazer Requisições PUT no React",
    content: "Neste post do blog, iremos aprender como usar a Fetch API para fazer requisições PUT no React..."
  };

  // Defina as opções da requisição
  const requestOptions = {
    method: "PUT", // Especifique o método da requisição
    headers: { "Content-Type": "application/json" }, // Especifique o tipo de conteúdo
    body: JSON.stringify(data) // Envie os dados em formato JSON
  };

  // Use try...catch para lidar com erros
  try {
    // Use await para esperar pela promessa retornada por fetch()
    const response = await fetch("https://example.com/api/posts/1", requestOptions);
    // Use await para esperar pela promessa retornada por response.json()
    const data = await response.json();
    // Faça algo com os dados
    console.log(data);
  } catch (error) {
    // Lide com o erro
    console.error(error);
  }
}

// Chame a função assíncrona
updatePost();

Como lidar com erros e estados de carregamento ao fazer uma requisição PUT com a Fetch API

Ao fazer uma requisição PUT com a Fetch API, você pode encontrar diferentes tipos de erros, como erros de rede, erros HTTP ou erros de análise JSON. Você precisa lidar com esses erros adequadamente e fornecer feedback apropriado ao usuário.

Lidando com erros ao fazer uma requisição PUT

Uma maneira de lidar com erros é usar o método catch() da promessa retornada pelo método fetch(). Este método capturará quaisquer erros que ocorram durante a requisição ou o processamento da resposta. Você pode usar a propriedade response.ok para verificar se o status da resposta está entre 200 e 299, o que indica uma requisição bem-sucedida. Se não, você pode lançar um erro com o status ou mensagem da resposta. Você também pode usar o método response.headers.get() para verificar se a resposta contém dados JSON antes de chamar o método response.json(), que lançará um erro se a resposta não for um JSON válido.

Outra maneira de lidar com erros é usar blocos try...catch com a sintaxe async/await. Isso permite que você escreva código assíncrono de uma maneira mais legível e concisa. Você pode usar a palavra-chave await para esperar pela promessa retornada pelo método fetch() e pelo método response.json(), e lidar com quaisquer erros que possam ocorrer com o bloco catch.

Aqui estão alguns exemplos de como lidar com erros ao fazer uma requisição PUT com a Fetch API:

// Usando o método catch()
fetch("https://example.com/api/posts/1", {
  method: "PUT",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ title: "Novo título" })
})
  .then(response => {
    // Verifique se a resposta é bem-sucedida
    if (!response.ok) {
      // Lançar um erro com o status ou mensagem
      throw Error(response.status || response.statusText);
    }
    // Verifique se a resposta contém dados JSON
    const isJson = response.headers.get("content-type")?.includes("application/json");
    // Analise a resposta como JSON se contiver, ou retorne null se não contiver
    return isJson ? response.json() : null;
  })
  .then(data => {
    // Faça algo com os dados
    console.log(data);
  })
  .catch(error => {
    // Lide com o erro
    console.error(error);
  });

// Usando blocos try...catch com async/await
async function updatePost() {
  try {
    // Espere pela promessa retornada pelo método fetch()
    const response = await fetch("https://example.com/api/posts/1", {
      method: "PUT",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ title: "Novo título" })
    });
    // Verifique se a resposta é bem-sucedida
    if (!response.ok) {
      // Lançar um erro com o status ou mensagem
      throw Error(response.status || response.statusText);
    }
    // Verifique se a resposta contém dados JSON
    const isJson = response.headers.get("content-type")?.includes("application/json");
    // Analise a resposta como JSON se contiver, ou retorne null se não contiver
    const data = isJson ? await response.json() : null;
    // Faça algo com os dados
    console.log(data);
  } catch (error) {
    // Lide com o erro
    console.error(error);
  }
}

// Chame a função assíncrona
updatePost();

Lidando com o estado de carregamento ao fazer uma requisição PUT com a Fetch API

Para lidar com o estado de carregamento, você pode usar uma variável de estado para indicar se a requisição está em andamento ou não. Você pode usar o hook useState para declarar e atualizar a variável de estado em um componente funcional. Você pode definir a variável de estado como true antes de fazer a requisição, e defini-la como false após a requisição ser concluída ou falhar. Você pode então usar a variável de estado para renderizar condicionalmente um indicador de carregamento ou os dados na interface.

Aqui está um exemplo de como lidar com o estado de carregamento ao fazer uma requisição PUT com a Fetch API em um componente funcional:

import React, { useState } from "react";

function App() {
  // Declare uma variável de estado para armazenar os dados
  const [data, setData] = useState(null);
  // Declare uma variável de estado para indicar o estado de carregamento
  const [loading, setLoading] = useState(false);

  // Defina os dados a serem atualizados
  const newData = {
    title: "Como Usar Fetch para Fazer Requisições PUT no React",
    content: "Neste post do blog, iremos aprender como usar a Fetch API para fazer requisições PUT no React..."
  };

  // Defina as opções da requisição
  const requestOptions = {
    method: "PUT",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(newData)
  };

  // Defina uma função para fazer a requisição
  function updatePost() {
    // Defina o estado de carregamento como verdadeiro
    setLoading(true);
    // Faça a requisição
    fetch("https://example.com/api/posts/1", requestOptions)
      .then(response => {
        // Verifique se a resposta é bem-sucedida
        if (!response.ok) {
          // Lançar um erro com o status ou mensagem
          throw Error(response.status || response.statusText);
        }
        // Verifique se a resposta contém dados JSON
        const isJson = response.headers.get("content-type")?.includes("application/json");
        // Analise a resposta como JSON se contiver, ou retorne null se não contiver
        return isJson ? response.json() : null;
      })
      .then(data => {
        // Atualize o estado com os dados
        setData(data);
        // Defina o estado de carregamento como falso
        setLoading(false);
      })
      .catch(error => {
        // Lide com o erro
        console.error(error);
        // Defina o estado de carregamento como falso
        setLoading(false);
      });
  }

  // Retorne o JSX para renderizar
  return (
    <div className="App">
      <h1>Como Usar Fetch para Fazer Requisições PUT no React</h1>
      <button onClick={updatePost}>Atualizar Post</button>
      {loading ? ( // Verifique se a requisição está em andamento
        <p>Carregando...</p> // Exiba uma mensagem de carregamento
      ) : data ? ( // Verifique se os dados estão disponíveis
        <div>
          <h2>{data.title}</h2> // Exiba os dados
          <p>{data.content}</p>
        </div>
      ) : null}
    </div>
  );
}

export default App;

Como usar Apidog para gerar código cliente Fetch com um clique

Apidog é uma plataforma baseada na web que ajuda você a descobrir, testar e integrar APIs web com facilidade. Uma das funcionalidades que a Apidog oferece é a capacidade de gerar código cliente Fetch com um clique, com base na especificação da API que você fornecer ou selecionar.

button

Para usar a Apidog para gerar código cliente Fetch com um clique, você pode seguir estes passos:

  • Clique no botão "Nova API" no painel ou selecione uma API existente na lista.
Apidog
  • Clique em "Gerar Código Cliente". A Apidog usará o motor OpenAPI Generator para gerar o código cliente Fetch para sua API, correspondendo aos endpoints e estruturas de dados que você definiu ou selecionou.
Apidog
  • Você verá uma janela modal com o código gerado, que você pode copiar para sua área de transferência.
Apidog
  • Você pode usar o código gerado em seu próprio projeto ou modificá-lo como desejar. Você também pode testar o código com o servidor mock da Apidog, que simula as respostas da API com base na sua especificação.

É isso! Você usou com sucesso a Apidog para gerar código cliente Fetch com um clique. Você pode usar essa funcionalidade para economizar tempo e evitar erros ao trabalhar com APIs web. Você também pode explorar outras funcionalidades que a Apidog oferece, como documentação da API, depuração da API, simulação da API e testes automatizados da API.

Conclusão

Neste post, aprendemos como usar a Fetch API para fazer requisições PUT. A Fetch API é uma maneira moderna e fácil de se comunicar com APIs no navegador, e o React fornece uma maneira poderosa e declarativa de criar interfaces de usuário com base em dados. Ao combinar essas duas tecnologias, podemos criar aplicações web dinâmicas e interativas que consomem dados de várias fontes.

Apidog oferece a capacidade de gerar código cliente Fetch com um clique, com base na especificação da API que você fornecer ou selecionar.

button
Como acessar a API do Claude 3.7 Sonnet e testar usando ApidogTutoriais

Como acessar a API do Claude 3.7 Sonnet e testar usando Apidog

Se você está empolgado com o último lançamento da Anthropic, Claude 3.7 Sonnet, e quer explorar suas capacidades através da API enquanto o testa com o Apidog, você está no lugar certo. 💡Antes de começarmos, deixe-me fazer uma rápida observação: baixe o Apidog gratuitamente hoje e otimize seu processo de teste de API, especialmente para explorar os poderosos recursos do Claude 3.7 Sonnet—perfeito para desenvolvedores que desejam testar modelos de IA de ponta como este!botão Vamos começar com a

@apidog

fevereiro 25, 2025

Como passar o x-API-key no cabeçalho?Tutoriais

Como passar o x-API-key no cabeçalho?

Desvende os segredos da segurança eficaz de APIs, dominando como passar x-API-key nos cabeçalhos. Este guia abrangente revelará a importância desse processo e como ferramentas como o Apidog podem facilitar seus esforços. Continue lendo para garantir que suas interações com a API permaneçam seguras!

Miguel Oliveira

agosto 12, 2024

Como corrigir o erro HTTP 405 Método Não Permitido no PostmanTutoriais

Como corrigir o erro HTTP 405 Método Não Permitido no Postman

O código de erro HTTP 405 ocorre quando você tenta acessar um servidor usando uma chave de API ou token de acesso inválido ou ausente. Neste artigo, veremos mais sobre o erro 405 e como corrigi-lo.

Miguel Oliveira

agosto 11, 2024