http - services - ¿Cuál es la diferencia entre POST y GET?
put patch (8)
Esta pregunta ya tiene una respuesta aquí:
Recientemente me he involucrado con PHP / AJAX / jQuery y me parece que una parte importante de estas tecnologías es la de POST
y GET
.
Primero, ¿cuál es la diferencia entre POST
y GET
? A través de la experimentación, sé que GET
agrega las variables de retorno y sus valores a la cadena de URL
website.com/directory/index.php?name=YourName&bday=YourBday
pero POST
no lo hace.
Entonces, ¿es esta la única diferencia o existen reglas o convenciones específicas para usar una u otra?
Segundo, también he visto POST
y GET
fuera de PHP: también en AJAX y jQuery. ¿Cómo difieren POST
y GET
entre estos 3? ¿Son la misma idea, la misma funcionalidad, solo se utilizan de manera diferente?
Aprenda sobre el protocolo HTTP subyacente
Esto es similar a conducir un coche. Usted se compra un auto y se va de viaje, pero no conoce ninguna de las señales, luces u otras reglas que debe obedecer. Obviamente, usted no puede conducir aunque sepa cómo manejar un automóvil. Al menos no de forma segura. No para ti, ni para los demás.
Debes aprender un poco sobre el protocolo HTTP. GET / POST no están relacionados (al menos no directamente) con PHP / AJAX / jQuery o similar. Los usan porque están usando el protocolo HTTP para la comunicación. Y hay mucho más en el protocolo HTTP que solo GET
y POST
.
Echa un vistazo a algunos de estos y luego busca por tu cuenta también:
Con POST también puede realizar codificación multiparte mime, lo que significa que también puede adjuntar archivos. Además, si está utilizando variables de publicación en la navegación de páginas, el usuario recibirá una advertencia preguntándole si desea volver a enviar el parámetro de publicación. Por lo general, tienen el mismo aspecto en una solicitud HTTP, pero debe atenerse a la POST si necesita "POST" algo A un servidor y "GET" si necesita OBTENER algo de un servidor, ya que esa es la forma en que estaban destinados.
La única diferencia "grande" entre POST y GET (cuando se usan con AJAX) es que GET se proporciona con la URL, están limitados en su longitud (ya que la URL no tiene una longitud infinita).
POST y GET son dos métodos de solicitud HTTP . GET suele estar destinado a recuperar algunos datos, y se espera que sea idempotente (la repetición de la consulta no tiene ningún efecto secundario) y solo puede enviar cantidades limitadas de datos de parámetros al servidor. Las solicitudes GET a menudo se almacenan en caché por defecto en algunos navegadores si no tiene cuidado.
POST está destinado a cambiar el estado del servidor. Transporta más datos y la repetición de la consulta tiene permitido (y generalmente se espera) que tenga efectos secundarios, como la creación de dos mensajes en lugar de uno.
Si bien no es una descripción de las diferencias, a continuación hay un par de cosas en que pensar al elegir el método correcto.
- Las solicitudes GET pueden ser almacenadas en caché por el navegador, lo que puede ser un problema (o beneficio) cuando se utiliza ajax.
- Las solicitudes GET exponen los parámetros a los usuarios (POST también lo hace, pero son menos visibles).
- POST puede pasar mucha más información al servidor y puede ser de casi cualquier longitud.
Si está trabajando con RESTfully , se debe usar GET para solicitudes en las que solo está obteniendo datos, y POST debe usarse para solicitudes en las que está sucediendo algo.
Algunos ejemplos:
OBTENGA la página que muestra una pregunta particular de SO
Publicar un comentario
Envíe una solicitud POST haciendo clic en el botón "Agregar al carrito".
Un POST
, a diferencia de un GET
, generalmente tiene información relevante en el cuerpo de la solicitud. (Un GET
no debe tener un cuerpo, así que aparte de las cookies, el único lugar para pasar información es en la URL). Además de mantener la URL relativamente más limpia, POST
también le permite enviar mucha más información (ya que las URL tienen una longitud limitada, por ejemplo). todos los propósitos prácticos), y le permite enviar casi cualquier tipo de datos (los formularios de carga de archivos, por ejemplo, no pueden usar GET
, tienen que usar POST
más un tipo de contenido / codificación especial).
Aparte de eso, un POST
connota que la solicitud cambiará algo, y no debe ser rehecha de ninguna manera. Es por eso que a veces ve su navegador preguntándole si desea volver a enviar los datos del formulario cuando presiona el botón "atrás".
GET
, por otro lado, debe ser idempotente , lo que significa que podría hacerlo un millón de veces y que el servidor hará lo mismo (y mostrará básicamente el mismo resultado) cada vez que lo haga.
GET
y POST
son dos tipos diferentes de solicitudes HTTP.
Según Wikipedia :
GET solicita una representación del recurso especificado. Tenga en cuenta que GET no debe usarse para operaciones que causan efectos secundarios, como usarlo para realizar acciones en aplicaciones web. Una razón para esto es que GET puede ser utilizado arbitrariamente por robots o rastreadores, que no deberían tener en cuenta los efectos secundarios que debería causar una solicitud.
y
POST envía datos para ser procesados (por ejemplo, desde un formulario HTML) al recurso identificado. Los datos están incluidos en el cuerpo de la solicitud. Esto puede resultar en la creación de un nuevo recurso o las actualizaciones de los recursos existentes o ambos.
En esencia, GET
se usa para recuperar datos remotos, y POST
se usa para insertar / actualizar datos remotos.
GET
y POST
, así como los otros métodos HTTP, si está interesado. Además de explicar los usos previstos de cada método, la especificación también proporciona al menos una razón práctica por la que GET
solo debe usarse para recuperar datos:
Finalmente, una consideración importante al usarLos autores de servicios que utilizan el protocolo HTTP NO DEBEN utilizar formularios basados en GET para el envío de datos confidenciales, ya que esto hará que estos datos se codifiquen en el URI de solicitud. Muchos servidores, servidores proxy y agentes de usuario existentes registrarán la URI de la solicitud en algún lugar donde pueda ser visible para terceros. Los servidores pueden utilizar el envío de formularios basado en POST en su lugar
GET
para solicitudes AJAX es que algunos navegadores, en particular IE, almacenarán en caché los resultados de una solicitud GET
. Así que si, por ejemplo, realiza una encuesta utilizando la misma solicitud GET
, siempre obtendrá los mismos resultados, incluso si los datos que está consultando se están actualizando en el lado del servidor. Una forma de solucionar este problema es hacer que la URL sea única para cada solicitud agregando una marca de tiempo.