Métodos de solicitud HTTP
¿Qué es HTTP?
El Protocolo de transferencia de hipertexto (HTTP) está diseñado para permitir las comunicaciones entre clientes y servidores.
HTTP funciona como un protocolo de solicitud y respuesta entre un cliente y un servidor.
Ejemplo: un cliente (navegador) envía una solicitud HTTP al servidor; luego el servidor devuelve una respuesta al cliente. La respuesta contiene información de estado sobre la solicitud y también puede contener el contenido solicitado.
Métodos HTTP
- OBTENER
- CORREO
- PONER
- CABEZA
- ELIMINAR
- PARCHE
- OPCIONES
Los dos métodos HTTP más comunes son: GET y POST.
El método GET
GET se utiliza para solicitar datos de un recurso específico.
GET es uno de los métodos HTTP más comunes.
Tenga en cuenta que la cadena de consulta (pares de nombre/valor) se envía en la URL de una solicitud GET:
/test/demo_form.php?name1=value1&name2=value2
Algunas otras notas sobre las solicitudes GET:
- Las solicitudes GET se pueden almacenar en caché
- Las solicitudes GET permanecen en el historial del navegador
- Las solicitudes GET se pueden marcar
- Las solicitudes GET nunca deben usarse cuando se trata de datos confidenciales
- Las solicitudes GET tienen restricciones de longitud
- Las solicitudes GET solo se utilizan para solicitar datos (no modificar)
El método POST
POST se utiliza para enviar datos a un servidor para crear/actualizar un recurso.
Los datos enviados al servidor con POST se almacenan en el cuerpo de la solicitud HTTP:
POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
POST es uno de los métodos HTTP más comunes.
Algunas otras notas sobre las solicitudes POST:
- Las solicitudes POST nunca se almacenan en caché
- Las solicitudes POST no permanecen en el historial del navegador
- Las solicitudes POST no se pueden marcar
- Las solicitudes POST no tienen restricciones en la longitud de los datos
El método PUT
PUT se utiliza para enviar datos a un servidor para crear/actualizar un recurso.
La diferencia entre POST y PUT es que las solicitudes PUT son idempotentes. Es decir, llamar a la misma solicitud PUT varias veces siempre producirá el mismo resultado. Por el contrario, llamar a una solicitud POST repetidamente tiene los efectos secundarios de crear el mismo recurso varias veces.
El método HEAD
HEAD es casi idéntico a GET, pero sin el cuerpo de respuesta.
En otras palabras, si GET /users devuelve una lista de usuarios, entonces HEAD /users realizará la misma solicitud pero no devolverá la lista de usuarios.
Las solicitudes HEAD son útiles para verificar qué devolverá una solicitud GET antes de realizar una solicitud GET, como antes de descargar un archivo grande o un cuerpo de respuesta.
El método DELETE
El método DELETE elimina el recurso especificado.
El Método OPCIONES
El método OPCIONES describe las opciones de comunicación para el recurso de destino.
Comparar GET y POST
La siguiente tabla compara los dos métodos HTTP: GET y POST.
GET | POST | |
---|---|---|
BACK button/Reload | Harmless | Data will be re-submitted (the browser should alert the user that the data are about to be re-submitted) |
Bookmarked | Can be bookmarked | Cannot be bookmarked |
Cached | Can be cached | Not cached |
Encoding type | application/x-www-form-urlencoded | application/x-www-form-urlencoded or multipart/form-data. Use multipart encoding for binary data |
History | Parameters remain in browser history | Parameters are not saved in browser history |
Restrictions on data length | Yes, when sending data, the GET method adds the data to the URL; and the length of a URL is limited (maximum URL length is 2048 characters) | No restrictions |
Restrictions on data type | Only ASCII characters allowed | No restrictions. Binary data is also allowed |
Security | GET is less secure compared to POST because data sent is part of the URL Never use GET when sending passwords or other sensitive information! |
POST is a little safer than GET because the parameters are not stored in browser history or in web server logs |
Visibility | Data is visible to everyone in the URL | Data is not displayed in the URL |