Solo quería agregar algo a la respuesta aceptada porque es demasiado amplia y una respuesta muy antigua.
voy a destacar algunas de las partes importantes en el RFC 2616 by W3
Voy a comenzar con PUT
porque en mi opinión tiene la mayor confusión en torno a ella.
PUT is used for both create/update PUT updates by completely replacing the resource on the server with the resource sent in the request
Por ejemplo
a tomar esta llamada a mi api
PUT /api/person
{
Name: John,
email: [email protected]
}
mi servidor tiene esta viviendo en el servidor de recursos
{
Name: Jane,
email: [email protected]
}
Ahora mi recurso existente se reemplaza completamente por lo que enviaste y esto es lo que tengo en mi servidor.
{
Name: John,
email: [email protected]
}
Así que si PUT
y sólo enviar un correo electrónico en el cuerpo
PUT /api/person
{
email: [email protected]
}
Mi servidor reemplazará completamente la entidad
{
Name: Jane,
email: [email protected]
}
Con
{
email: [email protected]
}
y nombre será g uno. Las actualizaciones parciales son para PATCH
pero uso POST
para eso de todos modos.
One of the main reasons why we create/update with put is because it is idempotent.
Es sólo un término de lujo y la definición básica de la misma es varias solicitudes idénticas son los mismos para una sola petición.
Ejemplo
Supongamos que PUT
un archivo a api/file
si el servidor de origen no encuentra ese archivo se creará uno. Si encuentra un archivo, reemplazará completamente el archivo anterior con el que envié. Esto asegura que un archivo se crea y actualiza alguna vez. Si no existe ningún archivo y llama al PUT
5 veces, la primera vez que crea un archivo, las otras 4 veces reemplaza el archivo con lo que envía. Si llama al POST
5 veces para crear, creará 5 archivos.
You PUT to that exact URI. If you don't you have to send a 301 (Moved Permanently) to the user and allow then make a choice whether or not to redirect the request. Most times the server you PUT to usually hosts the resource and takes care of updating it
Esos son los puntos más importantes de cuándo utilizar PUT
En lo que se refiere POST
You can also create/update and then some...
Como mencioné anteriormente, hay algunas diferencias clave.
- Mensaje es más General. ¿De qué maneras?algunos otros ejemplos incluyen una puerta de enlace a otros protocolos, podría tomar la respuesta y enviarla a algún manejador de datos a mediados de ese año, o puede extender algún tipo de funcionalidad.
- La publicación no tiene la restricción de "Para el URI exacto o notifiy", por ejemplo,
POST
puede agregar un recurso a una colección existente y decidir dónde se almacena.
Ahora qué pasa con Delete
¿Por qué no acabo de POST
?
Cuando DELETE
, el servidor NO DEBE responden con éxito a menos que elimine el recurso o la traslade a un lugar inaccesible en el momento de la respuesta se envía.
¿Por qué es eso importante? ¿Qué sucede si llama al DELETE
pero el recurso debe pasar por "APROBACIÓN" antes de eliminarse? Si se puede rechazar la eliminación, no se puede enviar un código de error exitoso y si se siguen las especificaciones básicas de esto, es confuso para la persona que llama. Solo un ejemplo, estoy seguro de que puedes pensar en muchos otros.
acabo de relieve algunos de los principales puntos sobre cuándo usar el común Http verbs
buena explicación. Sin entrar en demasiados detalles, ¿de qué tipo de "engaño" estamos hablando? –
Es bastante simple, en realidad. Al utilizar los métodos de Rails para generar formularios, si especifica PUT o DELETE, Rails realmente PUBLICARÁ el formulario, pero incluye un campo oculto en el formulario que especifica el método HTTP deseado. Luego, al procesar el formulario, Rails busca ese campo oculto y, si existe, informa (a través del objeto de solicitud) que el formulario se envió utilizando DELETE o PUT, aunque realmente se envió mediante POST. Así que, básicamente, si especifica DELETE, request.method returns: delete, aunque el formulario fue POSTed. Todo esto sucede automágicamente. – mipadi
Eso es simple. Gracias. –