Pregunta

Ambos parecen ser el envío de datos al servidor dentro del cuerpo, entonces, ¿qué los hace diferentes?

¿Fue útil?

Solución

HTTP PONER:

PONER coloca un archivo o recurso en una URI específicos, y exactamente en que URI.Si ya existe un archivo o recurso en que URI, PONER reemplaza el archivo o recurso.Si no hay ningún archivo o recurso, PONER crea uno.PONER es idempotente, pero , paradójicamente PONER las respuestas no son almacenables en caché.

HTTP 1.1 RFC ubicación para PONER

HTTP POST:

POST envía los datos a un URI específicos y espera que el recurso en que URI de la gestión de la solicitud.El servidor web en este punto puede determinar qué hacer con los datos en el contexto del recurso especificado.El método POST no idempotente, sin embargo , PUBLICAR las respuestas son cacheable tan largo como el servidor establece el adecuado Control de Caché y Caduca encabezados.

El oficial HTTP RFC especifica puesto:

  • Anotación de los recursos existentes;
  • La publicación de un mensaje en un tablón de anuncios, grupos de noticias, listas de correo, o grupo similar de artículos;
  • Proporcionar un bloque de datos, tales como el resultado de la presentación de un forma, a un proceso de manejo de datos;
  • La ampliación de una base de datos a través de una operación de anexar.

HTTP 1.1 RFC ubicación para el POST

La diferencia entre el POST y PONER:

El RFC sí mismo explica la diferencia central:

La diferencia fundamental entre el POST y PONER las solicitudes se refleja en los diferentes significados de la El URI de la solicitud.El URI en una petición POST identifica el recurso que se identificador de la entidad.Que recurso podría ser una base de datos-aceptar proceso, una puerta de entrada a algunos otros protocolo, o de una entidad independiente que acepta las anotaciones.En contraste, la URI en una solicitud PUT identifica el entidad que se adjunta con la solicitud -- el agente de usuario sabe lo que es URI la intención y el servidor NO DEBE intento de aplicar la petición de algunos otro recurso.Si el servidor de deseos que la petición se aplica a un URI diferente, DEBE enviar un 301 (redirección Permanente) de la respuesta;el agente de usuario PUEDE entonces hacer su propia decisión acerca de si o no para redirigir la petición.

Utilizando el método correcto, no relacionados a un lado:

Uno de los beneficios de RESTO ROA vs JABÓN es que cuando se usan HTTP RESTO ROA, se fomenta el uso adecuado de los verbos HTTP/métodos.Así, por ejemplo, sólo utilizaría PONER cuando desea crear un recurso en el que la ubicación exacta.Y que nunca usaría LLEGAR a crear o modificar un recurso.

Otros consejos

Sólo semántica.

Un HTTP PUT se supone aceptar el cuerpo de la petición y, a continuación, la tienda que en el recurso identificado por la URI.

Un HTTP POST es más general.Se supone que es para iniciar una acción en el servidor.Que la acción podría ser para almacenar el cuerpo de solicitud en el recurso identificado por la URI, o podría ser un URI diferente, o podría ser una acción diferente.

PONER es como la carga de un archivo.Un puesto a un URI afecta exactamente que URI.Un POST para un URI puede tener algún efecto.

Para dar ejemplos de DESCANSO-recursos de estilo:

"POST /books" con un montón de información sobre el libro puede crear un nuevo libro, y responder con la nueva URL de la identificación de ese libro:"/libros/5".

"PONER /libros/5", se tendría que crear un nuevo libro con el id de 5, o reemplazar el existente libro con ID 5.

En la no-recurso de estilo, POST puede ser utilizado para simplemente sobre cualquier cosa que tiene un efecto secundario.Otra diferencia es que el PUESTO debe ser idempotente - colocar varios de los mismos datos a la misma URL debe estar bien, mientras que los mensajes múltiples, se podrían crear varios objetos o lo que sea es tu POST acción no.

PUESTO que se entiende como un método para "subir" las cosas a un particular, URI, o sobrescribir lo que ya es en que URI.

POST, por otro lado, es una forma de presentar los datos RELACIONADOS con un determinado URI.

Consulte el RFC HTTP

Hasta donde yo sé, se utiliza sobre todo para la actualización de los registros.

  1. POST - crear documento o cualquier otro recurso

  2. PONER A actualizar el documento creado o cualquier otro recurso.

Pero para ser claros en que PONER por lo general 'Sustituye a' el registro existente si es que existe y se crea si no existe..

Otros ya han publicado excelentes respuestas, yo sólo quería añadir que con la mayoría de los lenguajes, frameworks, y los casos de uso se le trata con el POST mucho, mucho más a menudo de lo que PONGA.En el punto donde la PUT, DELETE, etc.básicamente son preguntas de trivia.

  1. OBTENER:Recupera datos desde el servidor.Deben tener ningún otro efecto.
  2. POST:Envía los datos al servidor para la creación de una nueva entidad.A menudo se utiliza cuando la carga de un archivo o la presentación de un formulario web.
  3. PONER:Similares a los POST, pero se utiliza para reemplazar una entidad existente.
  4. PARCHE:Similar a PONER, sino que se utiliza para actualizar sólo ciertos campos dentro de una entidad ya existente.
  5. ELIMINAR:Elimina los datos desde el servidor.
  6. SEGUIMIENTO:Proporciona una manera de probar lo que el servidor recibe.Simplemente devuelve lo que fue enviado.
  7. OPCIONES:Permite a un cliente para obtener información acerca de los métodos de petición apoyada por un servicio.La respuesta de cabecera es Permitir que con los métodos admitidos.También se utiliza en CORS como comprobación previa solicitud al servidor sobre el actual método de solicitud y preguntar acerca de los encabezados personalizados.
  8. La CABEZA:Devuelve sólo los encabezados de respuesta.
  9. CONECTE:Utilizado por el navegador cuando se sabe que se habla de un proxy y el final de la URI comienza con https://.La intención de CONECTAR es permitir extremo a extremo de cifrado TLS sesión, así que la información es ilegible para un proxy.

Un POST es considerado como algo de un tipo de fábrica método.Se incluyen datos con él para crear lo que usted desea y lo que está en el otro extremo no sabe qué hacer con ella.Una PUT se utiliza para actualizar los datos existentes en una URL determinada, o para crear algo nuevo cuando usted sabe lo que la URI a la que va a ser y que ya no existe (como opuesto a un POST en el que se va a crear algo y volver una dirección URL si es necesario).

Por favor, consulte: http://zacharyvoase.com/2009/07/03/http-post-put-diff/

He estado haciendo bastante molesto últimamente por una idea falsa popular por los desarrolladores web que un POST es usado para crear un recurso, y un PUESTO se utiliza para actualizar/cambiar uno.

Si usted echa un vistazo en la página 55 de RFC 2616 ("Protocolo de Transferencia de Hipertexto HTTP/1.1"), Sección 9.6 ("PUT"), verás lo que es en realidad:

El método PUT solicita que la entidad se almacenan bajo la suministra el URI de la Solicitud.

También hay un práctico párrafo para explicar la diferencia entre el POST y PONER:

La diferencia fundamental entre el POST y PONER las solicitudes se refleja en los diferentes significados de la URI de la Solicitud.El URI en una petición POST identifica el recurso que va a controlar la entidad.Ese recurso puede ser una base de datos-la aceptación de proceso, una puerta de entrada a algún otro protocolo, o de una entidad independiente que acepta las anotaciones.En contraste, el URI en una solicitud PUT identifica la entidad que se adjunta con la solicitud, el agente de usuario sabe lo que URI es la intención y el servidor NO DEBE intentar aplicar la solicitud a algún otro recurso.

No menciona nada acerca de la diferencia entre la actualización/creación, debido a que no se de qué se trata.Se trata de la diferencia entre esto:

obj.set_attribute(value) # A POST request.

Y esto:

obj.attribute = value # A PUT request.

Así que por favor, detener la propagación de esta idea falsa popular.Leer su Rfc.

RESTO pide a los desarrolladores el uso de métodos HTTP explícitamente y en una manera que es consistente con el definición de protocolo.Este básica RESTO principio de diseño establece un uno-a-uno entre la asignación de crear, leer, actualizar y borrar (CRUD) para las operaciones y los métodos HTTP.De acuerdo a este asignación:

• Para crear un recurso en el servidor, utilice POST.

• Para recuperar un recurso, utilice CONSEGUIR.

• Para cambiar el estado de un recurso o para su actualización, utilice PONER.

• Para quitar o eliminar un recurso de uso ELIMINAR.

Más info:Servicios Web RESTful:Los conceptos básicos de IBM

La diferencia entre el POST y PONER es que pongo es idempotente, es decir, llamando a la misma solicitud PUT varias veces siempre producirá el mismo resultado(que no es ningún efecto secundario), mientras que por otro lado, llamar a una solicitud POST repetidamente, puede tener (adicional) efectos secundarios de la creación de la misma recurso varias veces.

GET :Las solicitudes de uso de GET recuperar sólo los datos que se solicita una representación del recurso especificado

POST :Envía los datos al servidor para crear un recurso.El tipo del cuerpo de la petición se indica por el encabezado de Tipo de Contenido.A menudo causa un cambio en el estado o efectos secundarios en el servidor

PUT :Crea un nuevo recurso o reemplaza una representación del recurso de destino con la solicitud de carga

PATCH :Se utiliza para aplicar modificaciones parciales a un recurso

DELETE :Se elimina el recurso especificado

TRACE :Se realiza un mensaje de prueba de bucle a lo largo de la ruta de acceso al destino de los recursos, proporcionando un útil mecanismo de depuración

OPTIONS :Se utiliza para describir las opciones de comunicación para el recurso de destino, el cliente puede especificar una dirección URL para el método de OPCIONES, o con un asterisco (*) para referirse a todo el servidor.

HEAD :Se pide una respuesta idéntica a la de una petición GET, pero sin el cuerpo de la respuesta

CONNECT :Se establece un túnel en el que el servidor identificado por el destino de los recursos , puede ser utilizado para acceder a los sitios web que utilizan SSL (HTTPS)

Valdría la pena mencionar que POST está sujeta a algunas de las Los ataques CSRF mientras PUT no.

El CSRF a continuación se no es posible con PUT cuando la víctima visitas attackersite.com:

Normal de la solicitud (se envían las cookies):(PUT no se admite el valor del atributo)

<form id="myform" method="post" action="http://target.site.com/deleteUser" >
    <input type="hidden" name="userId" value="5">
</form>
<script>document.createElement('form').submit.call(document.getElementById('myform'));</script>

XHR solicitud (se envían las cookies):(PUT daría lugar a una comprobación previa petición)

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://target.site.com/deleteUser");
xhr.withCredentials=true;
xhr.send(["userId=5"]);

Simplemente

POST se utiliza para crear un recurso y la devuelve el recurso URI EX

REQUEST : POST ..../books
{
"book":"booName",
"author":"authorName"
}

Esta llamada debe crear un nuevo libro y devuelve ese libro URI

Response ..../books/5

PUT se utiliza para reemplazar un recurso, si ese recurso es que existen, a continuación, simplemente actualizarla, pero si el recurso no existe, a continuación, crear,

REQUEST : PUT ..../books/5
{
"book":"booName",
"author":"authorName"
}

el uso de PUT vamos a proporcionar el identificador de recursos, pero POST volverá el nuevo identificador de recursos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top