El enfoque [REST] [1] utiliza POST, GET, PUT y DELETE para implementar las reglas CRUD para un recurso web. Es una forma simple y ordenada de exponer objetos a las solicitudes en la web. Son servicios web sin los gastos generales.
Solo para aclarar las diferencias semánticas. Cada operación es bastante diferente. El punto es tener buenos métodos HTTP que tengan significados claros y distintos.
POST crea objetos nuevos. El URI no tiene clave; acepta un cuerpo de mensaje que define el objeto. Insertar SQL. [Editar Si bien no hay ninguna razón técnica para POST a tener ninguna tecla, la gente REST sugieren fuertemente que la POST de tener distinto significado que CREAR, no debe tener una clave.]
GET recupera los objetos existentes. El URI puede tener una clave, depende de si está haciendo singleton GET o list GET. SQL Select
PUT actualiza un objeto existente. El URI tiene una clave; Acepta un cuerpo de mensaje que actualiza un objeto. Actualización de SQL.
ELIMINAR elimina un objeto existente. El URI tiene una clave. SQL Delete.
¿Se puede actualizar un registro con POST en lugar de PUT? No sin introducir alguna ambigüedad. Los verbos deben tener efectos inequívocos. Además, POST URI no tienen clave, donde PUT debe tener una clave.
Cuando PUBLICO, espero un 201 CREADO. Si no entiendo, algo está mal. Del mismo modo, cuando PONGO, espero un 200 OK. Si no entiendo, algo está mal.
Supongo que podría insistir en cierta ambigüedad donde POST hace POST o PUT. El URI debe ser diferente; también el mensaje asociado podría ser diferente. En general, los usuarios de REST siguen el ejemplo de SQL, donde INSERT y UPDATE son verbos diferentes.
Puede indicar que UPDATE debe insertarse si el registro no existe o actualizar si el registro existe. Sin embargo, es más simple si ACTUALIZAR significa ACTUALIZAR y no actualizar significa que algo anda mal. Un repliegue secreto de INSERT hace que la operación sea ambigua.
Si no está construyendo una interfaz RESTful, entonces es típico usar solo GET y POST para recuperar y crear/actualizar. Es común tener diferencias de URI o diferencias de contenido de mensaje para distinguir entre POST y PUT cuando una persona hace clic en enviar en un formulario. Sin embargo, no está muy limpio porque su código tiene que determinar si está en el caso POST = crear caso o POST = actualizar.
¿Estás sugiriendo utilizar sólo GET y POST? No pude entenderlo. – Till
Gracias por señalar esto, he aclarado la pregunta. – Gili
Gili, debajo de ti ahora también quieres tirar PUT. Creo que necesitas volver a escribir la pregunta desde cero. La web parece funcionar con GET y POST, por lo que tal vez sea suficiente. – pbreitenbach