Los verbos HTTP son probablemente una de las cosas más crípticas sobre el protocolo HTTP. Existen, y hay muchos de ellos, pero ¿por qué existen?
Parece que Rails quiere admitir muchos verbos y agregar algunos verbos que no son compatibles con navegadores web de forma nativa.
Aquí hay una lista exhaustiva de verbos http: http://annevankesteren.nl/2007/10/http-methods
Hay el parche HTTP del RFC oficial: https://datatracker.ietf.org/doc/rfc5789/?include_text=1
El método PATCH solicita que se aplique un conjunto de cambios descritos en la entidad de solicitud al recurso identificado por el URI de solicitud. El conjunto de cambios se representa en un formato llamado "documento de parche" identificado por un tipo de medio. Si el URI de solicitud no apunta a un recurso existente, el servidor PUEDE crear un nuevo recurso, dependiendo del tipo de documento de revisión (si puede modificar lógicamente un recurso nulo) y permisos, etc.
La diferencia entre las solicitudes PUT y PATCH se refleja en la forma en que el servidor procesa la entidad adjunta para modificar el recurso identificado por el URI de solicitud. En una solicitud PUT , la entidad adjunta se considera una versión modificada del recurso almacenado en el servidor de origen, y el cliente solicita que se reemplace la versión almacenada. Sin embargo, con PATCH , la entidad adjunta contiene un conjunto de instrucciones que describen cómo se debe modificar un recurso que actualmente reside en el servidor de origen para producir una nueva versión. El
método PATCH afecta el recurso identificado por el URI de solicitud , y también
PUEDEtener efectos secundarios en otros recursos; es decir, se pueden crear nuevos recursos o modificar los existentes mediante la aplicación de un PATCH .
Hasta donde sé, el verbo PATCH no se usa como en las aplicaciones de rieles ... Según tengo entendido, el verbo de parche RFC debería usarse para enviar instrucciones de parche como cuando haces una diferencia entre dos archivos. En lugar de enviar toda la entidad nuevamente, envía un parche que podría ser mucho más pequeño que reenviar toda la entidad.
Imagina que quieres editar un archivo enorme. Editas 3 líneas. En lugar de devolver el archivo, solo tiene que enviar el diff. En el lado positivo, el envío de una solicitud de parche podría usarse para fusionar archivos de forma asincrónica. Un sistema de control de versiones podría utilizar el verbo PATCH para actualizar el código de forma remota.
Otro posible caso de uso está algo relacionado con las bases de datos NoSQL, es posible almacenar documentos. Digamos que usamos una estructura JSON para enviar datos de ida y vuelta desde el servidor al cliente. Si quisiéramos eliminar un campo, podríamos usar una sintaxis similar a la de mongodb para $ unset . En realidad, el método utilizado en mongodb para actualizar documentos probablemente podría usarse para manejar parches json.
Tomando este ejemplo:
db.products.update(
{ sku: "unknown" },
{ $unset: { quantity: "", instock: "" } }
)
Podríamos tener algo como esto:
PATCH /products?sku=unknown
{ "$unset": { "quantity": "", "instock": "" } }
Por último, pero no menos importante, las personas pueden decir lo que quieran sobre los verbos HTTP. Solo hay una verdad, y la verdad está en los RFC.