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.
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.

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
.

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:
- Define una función async que realice la petición. Una función async es una función que devuelve una promesa. Puedes utilizar la palabra clave
async
antes de la declaración o expresión de la función. - Dentro de la función async, utiliza la palabra clave
await
para esperar la promesa devuelta por el métodofetch()
. La palabra claveawait
pausa la ejecución de la función async hasta que la promesa se resuelva o se rechace. A continuación, devuelve el valor resuelto o lanza un error. - Utiliza de nuevo la palabra clave
await
para esperar la promesa devuelta por el métodoresponse.json()
, que analiza el cuerpo de la respuesta como JSON y devuelve otra promesa. - Gestiona los datos o el error como desees. Puedes utilizar bloques
try...catch
para capturar cualquier error que pueda producirse durante la operación async.

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.
Para utilizar Apidog para generar código de cliente Fetch con un solo clic, puedes seguir estos pasos:
- Haz clic en el botón "Nueva API" en el panel de control o selecciona una API existente de la lista.

- Haz clic en "Generar código de cliente". Apidog utilizará el motor OpenAPI Generator para generar el código de cliente Fetch para tu API, haciendo coincidir los puntos finales y las estructuras de datos que hayas definido o seleccionado.

- Verás una ventana modal con el código generado, que puedes copiar al portapapeles.

- Puedes utilizar el código generado en tu propio proyecto, o modificarlo como desees. También puedes probar el código con el servidor mock de Apidog, que simula las respuestas de la API basándose en tu especificación.
¡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.