Métodos de petición HTTP explicados
HTTP define nueve métodos de petición estándar, pero la mayor parte del tráfico diario usa solo unos pocos. Esta tabla explica cada método, si es seguro e idempotente y los códigos que devuelve una llamada correcta.
| Método | Uso | ¿Seguro? | ¿Idempotente? | Estado de éxito |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
Notas
- Seguro significa que el método nunca cambia el estado del servidor: GET, HEAD, OPTIONS y TRACE son los únicos seguros.
- Idempotente significa que repetir la llamada da el mismo resultado que una sola: PUT, DELETE y GET lo cumplen; POST y PATCH no.
- Cuando una ruta no acepta un método, el servidor responde 405 Method Not Allowed y suele incluir la cabecera Allow.
Preguntas frecuentes
- ¿Cuál es la diferencia entre GET y POST?
- GET recupera un recurso sin efectos secundarios y puede repetirse con seguridad; los parámetros van en la URL. POST crea algo o dispara una acción, puede cambiar el estado y no debe repetirse a ciegas.
- ¿Qué significa que un método HTTP sea seguro?
- Un método seguro nunca modifica el estado del servidor, así que puede llamarse sin riesgo. GET, HEAD, OPTIONS y TRACE son seguros; POST, PUT, PATCH y DELETE no lo son.
- ¿Cuál es la diferencia entre PUT y PATCH?
- PUT reemplaza todo el recurso con lo que envías; PATCH aplica un cambio parcial solo a ciertos campos. PUT es idempotente, repetirlo da el mismo resultado; PATCH en general no lo es.
- ¿Qué hace el método HEAD?
- HEAD funciona como GET pero no devuelve cuerpo. Sirve para comprobar si un recurso existe, su tamaño o sus cabeceras sin descargar el contenido completo.