Cómo usar Fetch para hacer solicitudes PUT en React

Aprende a usar la API fetch para PUT en React. Actualiza datos en el servidor con hooks y gestiona errores.

Daniel Costa

Daniel Costa

15 April 2025

Cómo usar Fetch para hacer solicitudes PUT en React

Si eres un desarrollador web, probablemente sepas lo importante que es comunicarse con las API y obtener datos de fuentes externas. React, una popular biblioteca de JavaScript para construir interfaces de usuario, proporciona una forma sencilla y elegante de hacerlo con la Fetch API.

La Fetch API es una interfaz moderna para realizar peticiones HTTP desde el navegador. Utiliza promesas de JavaScript, lo que facilita y hace más legible el trabajo con operaciones asíncronas. Puedes utilizar la Fetch API para realizar varios tipos de peticiones, como GET, POST, DELETE y PUT.

En esta entrada de blog, nos centraremos en cómo utilizar la Fetch API para realizar peticiones PUT en React. Una petición PUT se utiliza para actualizar o reemplazar un recurso existente en un servidor. Por ejemplo, es posible que quieras utilizar una petición PUT para editar una entrada de blog, actualizar un perfil de usuario o cambiar el precio de un producto.

💡
Apidog es una plataforma basada en la web que te ayuda a descubrir, probar e integrar API web con facilidad. Una de las características que ofrece Apidog es la capacidad de generar código de cliente Fetch con un solo clic, basándose en la especificación de la API que proporciones o selecciones. Descarga Apidog gratis y empieza ahora.
button

Qué es una petición PUT y cuándo utilizarla

Una petición PUT es uno de los cuatro métodos HTTP fundamentales, junto con GET, POST y DELETE. Una petición PUT se utiliza para actualizar o reemplazar un recurso existente en un servidor. El cuerpo de la petición suele contener los datos que quieres actualizar o reemplazar.

Por ejemplo, supongamos que tienes una entrada de blog con los siguientes datos:

{
  "id": 1,
  "title": "Cómo utilizar Fetch para realizar peticiones GET en React",
  "content": "En esta entrada de blog, aprenderemos a utilizar la Fetch API para realizar peticiones GET en React...",
  "author": "David",
  "date": "2023-01-01"
}

Si quieres cambiar el título y el contenido de la entrada del blog, puedes utilizar una petición PUT para enviar los nuevos datos al servidor. La URL de la petición sería algo así como https://example.com/api/posts/1, donde 1 es el id de la entrada del blog. El cuerpo de la petición sería algo así:

{
  "title": "Cómo utilizar Fetch para realizar peticiones PUT en React",
  "content": "En esta entrada de blog, aprenderemos a utilizar la Fetch API para realizar peticiones PUT en React..."
}

El servidor actualizaría entonces la entrada del blog con los nuevos datos y devolvería una respuesta con el recurso actualizado o un mensaje de confirmación.

PUT request

Una petición PUT es diferente de una petición POST, que se utiliza para crear un nuevo recurso en un servidor. Una petición POST no requiere un id o una URL específica, mientras que una petición PUT sí. Una petición POST puede resultar en un recurso duplicado si se repite, mientras que una petición PUT es idempotente, lo que significa que no cambiará el estado del servidor si se repite.

Una petición PUT también es diferente de una petición PATCH, que se utiliza para actualizar parcialmente un recurso existente en un servidor. Una petición PATCH sólo envía los datos que necesitan ser cambiados, mientras que una petición PUT envía todos los datos que reemplazan el recurso original. Una petición PATCH es más eficiente y flexible, pero no todos los servidores la soportan.

Cómo realizar una petición PUT sencilla con la Fetch API

Realizar una petición PUT con la Fetch API es muy fácil y sencillo. Sólo tienes que llamar al método fetch(), pasar la URL de la que quieres obtener datos y proporcionar un objeto de opciones con el método de petición, las cabeceras y el cuerpo. A continuación, puedes gestionar la respuesta cuando se resuelva.

Aquí tienes un ejemplo de cómo realizar una petición PUT sencilla con la Fetch API:

// Define los datos a actualizar
const data = {
  title: "Cómo utilizar Fetch para realizar peticiones PUT en React",
  content: "En esta entrada de blog, aprenderemos a utilizar la Fetch API para realizar peticiones PUT en React..."
};

// Define las opciones de la petición
const requestOptions = {
  method: "PUT", // Especifica el método de petición
  headers: { "Content-Type": "application/json" }, // Especifica el tipo de contenido
  body: JSON.stringify(data) // Envía los datos en formato JSON
};

// Realiza la petición
fetch("https://example.com/api/posts/1", requestOptions)
  .then(response => response.json()) // Analiza la respuesta como JSON
  .then(data => console.log(data)) // Haz algo con los datos
  .catch(error => console.error(error)); // Gestiona los errores

En este ejemplo, estamos actualizando una entrada de blog con el id 1 en el servidor. Estamos enviando el nuevo título y contenido en el cuerpo de la petición, y especificando el tipo de contenido como application/json. También estamos utilizando el método json() para analizar la respuesta como JSON, y registrando los datos en la consola. Si hay un error, lo estamos capturando y registrando también en la consola.

Esta es la sintaxis básica para realizar una petición PUT con la Fetch API. Puedes utilizar esta sintaxis para realizar cualquier petición PUT a cualquier API que la soporte. Sin embargo, si estás utilizando React, hay algunos pasos y consideraciones adicionales que debes tener en cuenta.

Cómo utilizar los hooks de React para realizar una petición PUT en un componente funcional

Si estás utilizando React, es posible que quieras realizar una petición PUT en un componente funcional y actualizar el estado del componente cuando se reciban los datos. Esto te permite obtener datos de una API y mostrarlos en tu IU.

Para ello, puedes utilizar los hooks de React, que son funciones especiales que te permiten utilizar el estado y otras características de React en componentes funcionales. Los hooks más utilizados son useState y useEffect.

REact

El hook useState te permite declarar una variable de estado y una función para actualizarla. El estado inicial se pasa como argumento al hook, y el valor devuelto es un array con la variable de estado y la función de actualización. Puedes utilizar la variable de estado para almacenar los datos que quieres mostrar en la IU, y la función de actualización para actualizar el estado cuando cambien los datos.

El hook useEffect te permite realizar efectos secundarios, como realizar peticiones HTTP, en componentes funcionales. El primer argumento es una función que se ejecuta después de que el componente se renderice, y el segundo argumento es un array de dependencias que determina cuándo se ejecuta el efecto. Si pasas un array vacío, el efecto sólo se ejecutará una vez cuando el componente se monte, de forma similar al método de ciclo de vida componentDidMount en los componentes de clase.

Aquí tienes un ejemplo de cómo utilizar los hooks de React para realizar una petición PUT en un componente funcional:

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

function App() {
  // Declara una variable de estado para almacenar los datos
  const [data, setData] = useState(null);

  // Define los datos a actualizar
  const newData = {
    title: "Cómo utilizar Fetch para realizar peticiones PUT en React",
    content: "En esta entrada de blog, aprenderemos a utilizar la Fetch API para realizar peticiones PUT en React..."
  };

  // Define las opciones de la petición
  const requestOptions = {
    method: "PUT",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(newData)
  };

  // Utiliza el hook useEffect para realizar la petición
  useEffect(() => {
    // Realiza la petición
    fetch("https://example.com/api/posts/1", requestOptions)
      .then(response => response.json()) // Analiza la respuesta como JSON
      .then(data => setData(data)) // Actualiza el estado con los datos
      .catch(error => console.error(error)); // Gestiona los errores
  }, []); // Pasa un array vacío como segundo argumento para ejecutar el efecto sólo una vez

  // Devuelve el JSX a renderizar
  return (
    <div className="App">
      <h1>Cómo utilizar Fetch para realizar peticiones PUT en React</h1>
      {data ? ( // Comprueba si los datos están disponibles
        <div>
          <h2>{data.title}</h2> // Muestra los datos
          <p>{data.content}</p>
        </div>
      ) : (
        <p>Cargando...</p> // Muestra un mensaje de carga
      )}
    </div>
  );
}

export default App;

En este ejemplo, estamos utilizando el hook useState para declarar una variable de estado llamada data y una función llamada setData para actualizarla. El estado inicial es null, lo que significa que aún no hay datos disponibles.

También estamos utilizando el hook useEffect para realizar la petición PUT cuando el componente se monta. Estamos utilizando la misma sintaxis que antes, pero en lugar de registrar los datos en la consola, estamos actualizando el estado con la función setData. Estamos pasando un array vacío como segundo argumento al hook useEffect, para que el efecto sólo se ejecute una vez.

Cómo utilizar async/await para realizar una petición PUT con la Fetch API

Async/await es una característica del JavaScript moderno que te permite escribir código asíncrono de una forma más legible y concisa. Funciona con promesas, que son objetos que representan el resultado de una operación asíncrona. Una promesa puede ser resuelta (con un valor) o rechazada (con un error).

Para utilizar async/await para realizar una petición PUT con la Fetch API, tienes que seguir los siguientes pasos:

Aquí tienes un ejemplo de una función async que realiza una petición PUT con la Fetch API:

// Define una función async que realiza una petición PUT
async function updatePost() {
  // Define los datos a actualizar
  const data = {
    title: "Cómo utilizar Fetch para realizar peticiones PUT en React",
    content: "En esta entrada de blog, aprenderemos a utilizar la Fetch API para realizar peticiones PUT en React..."
  };

  // Define las opciones de la petición
  const requestOptions = {
    method: "PUT", // Especifica el método de petición
    headers: { "Content-Type": "application/json" }, // Especifica el tipo de contenido
    body: JSON.stringify(data) // Envía los datos en formato JSON
  };

  // Utiliza try...catch para gestionar los errores
  try {
    // Utiliza await para esperar la promesa devuelta por fetch()
    const response = await fetch("https://example.com/api/posts/1", requestOptions);
    // Utiliza await para esperar la promesa devuelta por response.json()
    const data = await response.json();
    // Haz algo con los datos
    console.log(data);
  } catch (error) {
    // Gestiona el error
    console.error(error);
  }
}

// Llama a la función async
updatePost();

Cómo gestionar los errores y los estados de carga al realizar una petición PUT con la Fetch API

Al realizar una petición PUT con la Fetch API, puedes encontrarte con diferentes tipos de errores, como errores de red, errores HTTP o errores de análisis JSON. Tienes que gestionar estos errores correctamente y proporcionar una respuesta adecuada al usuario.

Gestión de errores al realizar una petición PUT

Una forma de gestionar los errores es utilizar el método catch() de la promesa devuelta por el método fetch(). Este método capturará cualquier error que se produzca durante la petición o el procesamiento de la respuesta. Puedes utilizar la propiedad response.ok para comprobar si el estado de la respuesta está entre 200 y 299, lo que indica una petición exitosa. Si no es así, puedes lanzar un error con el estado o el mensaje de la respuesta. También puedes utilizar el método response.headers.get() para comprobar si la respuesta contiene datos JSON antes de llamar al método response.json(), que lanzará un error si la respuesta no es un JSON válido.

Otra forma de gestionar los errores es utilizar los bloques try...catch con la sintaxis async/await. Esto te permite escribir código asíncrono de una forma más legible y concisa. Puedes utilizar la palabra clave await para esperar la promesa devuelta por el método fetch() y el método response.json(), y gestionar cualquier error que pueda producirse con el bloque catch.

Aquí tienes algunos ejemplos de cómo gestionar los errores al realizar una petición PUT con la Fetch API:

// Utilizando el método catch()
fetch("https://example.com/api/posts/1", {
  method: "PUT",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ title: "New title" })
})
  .then(response => {
    // Comprueba si la respuesta es exitosa
    if (!response.ok) {
      // Lanza un error con el estado o el mensaje
      throw Error(response.status || response.statusText);
    }
    // Comprueba si la respuesta contiene datos JSON
    const isJson = response.headers.get("content-type")?.includes("application/json");
    // Analiza la respuesta como JSON si lo hace, o devuelve null si no lo hace
    return isJson ? response.json() : null;
  })
  .then(data => {
    // Haz algo con los datos
    console.log(data);
  })
  .catch(error => {
    // Gestiona el error
    console.error(error);
  });

// Utilizando los bloques try...catch con async/await
async function updatePost() {
  try {
    // Espera la promesa devuelta por el método fetch()
    const response = await fetch("https://example.com/api/posts/1", {
      method: "PUT",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ title: "New title" })
    });
    // Comprueba si la respuesta es exitosa
    if (!response.ok) {
      // Lanza un error con el estado o el mensaje
      throw Error(response.status || response.statusText);
    }
    // Comprueba si la respuesta contiene datos JSON
    const isJson = response.headers.get("content-type")?.includes("application/json");
    // Analiza la respuesta como JSON si lo hace, o devuelve null si no lo hace
    const data = isJson ? await response.json() : null;
    // Haz algo con los datos
    console.log(data);
  } catch (error) {
    // Gestiona el error
    console.error(error);
  }
}

// Llama a la función async
updatePost();

Gestión del estado de carga al realizar una petición PUT con la Fetch API

Para gestionar el estado de carga, puedes utilizar una variable de estado para indicar si la petición está en curso o no. Puedes utilizar el hook useState para declarar y actualizar la variable de estado en un componente funcional. Puedes establecer la variable de estado en true antes de realizar la petición, y establecerla en false después de que la petición se complete o falle. A continuación, puedes utilizar la variable de estado para renderizar condicionalmente un indicador de carga o los datos en la IU.

Aquí tienes un ejemplo de cómo gestionar el estado de carga al realizar una petición PUT con la Fetch API en un componente funcional:

import React, { useState } from "react";

function App() {
  // Declara una variable de estado para almacenar los datos
  const [data, setData] = useState(null);
  // Declara una variable de estado para indicar el estado de carga
  const [loading, setLoading] = useState(false);

  // Define los datos a actualizar
  const newData = {
    title: "Cómo utilizar Fetch para realizar peticiones PUT en React",
    content: "En esta entrada de blog, aprenderemos a utilizar la Fetch API para realizar peticiones PUT en React..."
  };

  // Define las opciones de la petición
  const requestOptions = {
    method: "PUT",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(newData)
  };

  // Define una función para realizar la petición
  function updatePost() {
    // Establece el estado de carga en true
    setLoading(true);
    // Realiza la petición
    fetch("https://example.com/api/posts/1", requestOptions)
      .then(response => {
        // Comprueba si la respuesta es exitosa
        if (!response.ok) {
          // Lanza un error con el estado o el mensaje
          throw Error(response.status || response.statusText);
        }
        // Comprueba si la respuesta contiene datos JSON
        const isJson = response.headers.get("content-type")?.includes("application/json");
        // Analiza la respuesta como JSON si lo hace, o devuelve null si no lo hace
        return isJson ? response.json() : null;
      })
      .then(data => {
        // Actualiza el estado con los datos
        setData(data);
        // Establece el estado de carga en false
        setLoading(false);
      })
      .catch(error => {
        // Gestiona el error
        console.error(error);
        // Establece el estado de carga en false
        setLoading(false);
      });
  }

  // Devuelve el JSX a renderizar
  return (
    <div className="App">
      <h1>Cómo utilizar Fetch para realizar peticiones PUT en React</h1>
      <button onClick={updatePost}>Actualizar entrada</button>
      {loading ? ( // Comprueba si la petición está en curso
        <p>Cargando...</p> // Muestra un mensaje de carga
      ) : data ? ( // Comprueba si los datos están disponibles
        <div>
          <h2>{data.title}</h2> // Muestra los datos
          <p>{data.content}</p>
        </div>
      ) : null}
    </div>
  );
}

export default App;

Cómo utilizar Apidog para generar código de cliente Fetch con un solo clic

Apidog es una plataforma basada en la web que te ayuda a descubrir, probar e integrar API web con facilidad. Una de las características que ofrece Apidog es la capacidad de generar código de cliente Fetch con un solo clic, basándose en la especificación de la API que proporciones o selecciones.

button

Para utilizar Apidog para generar código de cliente Fetch con un solo clic, puedes seguir estos pasos:

Apidog
Apidog
Apidog

¡Eso es todo! Has utilizado con éxito Apidog para generar código de cliente Fetch con un solo clic. Puedes utilizar esta función para ahorrar tiempo y evitar errores al trabajar con API web. También puedes explorar otras funciones que ofrece Apidog, como la documentación de la API, la depuración de la API, la simulación de la API y las pruebas automatizadas de la API.

Conclusión

En esta entrada, hemos aprendido a utilizar la Fetch API para realizar peticiones PUT en. La Fetch API es una forma moderna y sencilla de comunicarse con las API en el navegador, y React proporciona una forma potente y declarativa de crear interfaces de usuario basadas en datos. Combinando estas dos tecnologías, podemos crear aplicaciones web dinámicas e interactivas que consuman datos de diversas fuentes.

Apidog ofrece la posibilidad de generar código de cliente Fetch con un solo clic, basándose en la especificación de la API que proporciones o selecciones.

button

Explore more

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

15 April 2025

Cómo usar n8n con servidores MCP

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

14 April 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

11 April 2025

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs