verbs verbos peticion metodos metodo http rest couchdb

verbos - metodos http rest



¿No se usa el verbo HTTP PUT para actualizar y no crear contenido? (4)

El término clave para PUT para mí es siempre idempotente . Mientras que para POST siempre está "agregando otro elemento" al estado de sistemas, con PUT, la acción es la misma aunque se realice varias veces (porque está dirigiendo un elemento).

Ejemplo:

haciendo POST / álbumes 100 veces = terminaría con 100 álbumes diferentes (pero con el mismo contenido)

haciendo 100 veces PUT / albums / 123 = terminarías con un solo álbum con id 123 (con el contenido)

En CouchDB, para crear un nuevo documento que envíes:

PUT /albums/70b50bfa0a4b3aed1f8aff9e92dc16a0

¿No se utiliza PUT para actualizar los datos y no para crearlos?


PUT es crear un recurso nuevo o reemplazar un recurso existente por completo cuando sepa el URI existente o cuál será el nuevo URI. POST es para actualizar partes de un recurso existente, o para crear un nuevo recurso cuando el servidor tiene que asignar el nuevo URI. Es así de simple. Tanto PUT como POST se utilizan para las creaciones y actualizaciones, no se trata de si está creando o actualizando, se trata de si ya conoce el URI o si necesita el servidor para asignárselo.


Se utiliza para ambos. Quoth el RFC :

El método PUT solicita que la entidad adjunta se almacene bajo el URI de solicitud suministrado. Si la Solicitud-URI se refiere a un recurso ya existente, la entidad adjunta DEBERÍA considerarse como una versión modificada de la que reside en el servidor de origen. Si el URI de solicitud no apunta a un recurso existente, y ese agente de usuario solicitante puede definir el URI como un nuevo recurso, el servidor de origen puede crear el recurso con ese URI.


PUT se usa para actualizar el contenido, pero si ya tiene un ID, está actualizando. En REST, generalmente, POST a /albums (o lo que sea) para crear un nuevo registro con una identificación aún desconocida. Ya que tiene una identificación, está actualizando el documento vacío con esa identificación para el contenido que está proporcionando.