Verbos HTTP en APIs REST: Qué son y cómo usarlos correctamente
Las APIs REST son fundamentales en el desarrollo de software moderno. Para interactuar con ellas, utilizamos los verbos HTTP, que permiten definir el tipo de acción que queremos realizar sobre los recursos de la API.
En este artículo, exploraremos los verbos más utilizados en RESTful APIs, cuándo usarlos y algunos errores comunes que debes evitar.
¿Qué son los verbos HTTP?
Los verbos HTTP (también llamados métodos HTTP) indican la acción que se desea realizar sobre un recurso en una API. En una API REST, los recursos suelen representarse como URLs.
Por ejemplo, en una API que gestiona usuarios, el recurso podría ser:
https://api.ejemplo.com/usuarios
Los verbos HTTP nos permiten:
- Obtener información (
GET
) - Crear un nuevo recurso (
POST
) - Actualizar un recurso existente (
PUT
oPATCH
) - Eliminar un recurso (
DELETE
)
Veamos cada uno en detalle.
Verbos HTTP más utilizados en APIs REST
1. GET – Obtener recursos
El método GET
se usa para recuperar información de la API.
- Es idempotente: No cambia el estado del servidor.
- No debe modificar datos.
- Se pueden usar parámetros en la URL para filtrar resultados.
Ejemplo de solicitud GET
para obtener todos los usuarios:
GET /usuarios HTTP/1.1
Host: api.ejemplo.com
Ejemplo en fetch
:
fetch('https://api.ejemplo.com/usuarios')
.then(response => response.json())
.then(data => console.log(data));
Ejemplo de respuesta:
[
{ "id": 1, "nombre": "Javier" },
{ "id": 2, "nombre": "Ana" }
]
2. POST – Crear un nuevo recurso
El método POST
se usa para crear un nuevo recurso en el servidor.
- No es idempotente (si se envía varias veces, puede crear duplicados).
- La información suele enviarse en el cuerpo de la solicitud.
Ejemplo de solicitud POST
para crear un usuario:
POST /usuarios HTTP/1.1
Host: api.ejemplo.com
Content-Type: application/json
{
"nombre": "Carlos",
"email": "carlos@ejemplo.com"
}
Ejemplo en fetch
:
fetch('https://api.ejemplo.com/usuarios', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ nombre: 'Carlos', email: 'carlos@ejemplo.com' })
});
Ejemplo de respuesta:
{
"id": 3,
"nombre": "Carlos",
"email": "carlos@ejemplo.com"
}
3. PUT – Reemplazar un recurso completo
El método PUT
se usa para actualizar un recurso existente enviando todos sus atributos.
- Es idempotente (varias solicitudes con los mismos datos no generan cambios adicionales).
- Si el recurso no existe, algunas APIs lo crean (pero no es recomendable).
Ejemplo de solicitud PUT
para actualizar un usuario:
PUT /usuarios/3 HTTP/1.1
Host: api.ejemplo.com
Content-Type: application/json
{
"nombre": "Carlos Pérez",
"email": "carlos@ejemplo.com"
}
Ejemplo en fetch
:
fetch('https://api.ejemplo.com/usuarios/3', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ nombre: 'Carlos Pérez', email: 'carlos@ejemplo.com' })
});
4. PATCH – Actualizar parcialmente un recurso
El método PATCH
se usa cuando solo quieres modificar ciertos atributos de un recurso.
- No requiere enviar todos los atributos.
- Es útil cuando el recurso es muy grande.
Ejemplo de solicitud PATCH
para cambiar solo el nombre:
PATCH /usuarios/3 HTTP/1.1
Host: api.ejemplo.com
Content-Type: application/json
{
"nombre": "Carlos Pérez"
}
Ejemplo en fetch
:
fetch('https://api.ejemplo.com/usuarios/3', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ nombre: 'Carlos Pérez' })
});
DELETE – Eliminar un recurso
El método DELETE
se usa para borrar un recurso del servidor.
- Puede ser idempotente (varias solicitudes sobre el mismo recurso tienen el mismo resultado).
- Generalmente no devuelve datos, solo un código HTTP (
204 No Content
).
???? Ejemplo de solicitud DELETE
para eliminar un usuario:
DELETE /usuarios/3 HTTP/1.1
Host: api.ejemplo.com
???? Ejemplo en fetch
:
fetch('https://api.ejemplo.com/usuarios/3', {
method: 'DELETE'
});
Resumen de los verbos HTTP en REST
Método | Acción | Idempotente | Cuerpo de la solicitud |
---|---|---|---|
GET | Obtener un recurso | ✅ Sí | ❌ No |
POST | Crear un recurso | ❌ No | ✅ Sí |
PUT | Reemplazar un recurso | ✅ Sí | ✅ Sí |
PATCH | Modificar parcialmente | ❌ No | ✅ Sí |
DELETE | Eliminar un recurso | ✅ Sí | ❌ No (en general) |