Actualmente utilizamos el método PATCH (rfc5789) para permitir realizar actualizaciones parciales de recursos.
Es decir, mientras que PUT requiere que se envíe el recurso completo, PATCH permite que se envíen solo los aquellos campos o partes del recurso que se quiere actualizar. Esto representa una gran ventaja para recursos de granularidad gruesa (como recomienda el estilo ReST) ya que permite evitar el envío de todo el documento cuando se desea actualizar solo una pequeña porción.
Aún en un ejemplo simplificado se puede apreciar el beneficio de poder enviar:
Semánticamente, en el caso de PATCH, se actualizará solo el campo "edad" con el nuevo valor, dejando todo lo demás en su estado preexistente en el recurso.
Si fuera necesario, se pueden utilizar los headers estándar If-Match/Etag para implementar optimistic locking.
Si bien en este proyecto ya se ha tocado el tema (#10, #3), no encuentro una decisión al respecto y creo que sería muy valiosa su incorporación.
Actualmente utilizamos el método PATCH (rfc5789) para permitir realizar actualizaciones parciales de recursos.
Es decir, mientras que PUT requiere que se envíe el recurso completo, PATCH permite que se envíen solo los aquellos campos o partes del recurso que se quiere actualizar. Esto representa una gran ventaja para recursos de granularidad gruesa (como recomienda el estilo ReST) ya que permite evitar el envío de todo el documento cuando se desea actualizar solo una pequeña porción.
Aún en un ejemplo simplificado se puede apreciar el beneficio de poder enviar:
Comparado con:
Si lo único que se desea es actualizar la edad.
Semánticamente, en el caso de PATCH, se actualizará solo el campo "edad" con el nuevo valor, dejando todo lo demás en su estado preexistente en el recurso.
Si fuera necesario, se pueden utilizar los headers estándar If-Match/Etag para implementar optimistic locking.
Si bien en este proyecto ya se ha tocado el tema (#10, #3), no encuentro una decisión al respecto y creo que sería muy valiosa su incorporación.