I verbi HTTP sono probabilmente una delle cose più criptiche sul protocollo HTTP. Esistono e ce ne sono molti, ma perché esistono?
Rails sembra voler supportare molti verbi e aggiungere alcuni verbi che non sono supportati nativamente dai browser web.
Ecco un elenco esaustivo di verbi http: http://annevankesteren.nl/2007/10/http-methods
C'è la patch HTTP dalla RFC ufficiale: https://datatracker.ietf.org/doc/rfc5789/?include_text=1
Il metodo PATCH richiede l'applicazione di una serie di modifiche descritte nell'entità richiesta alla risorsa identificata dall'URI della richiesta. L'insieme delle modifiche è rappresentato in un formato chiamato "documento patch" identificato da un tipo di supporto. Se l'URI della richiesta non punta a una risorsa esistente, il server PUO ' creare una nuova risorsa, a seconda del tipo di documento patch (se può modificare logicamente una risorsa nulla) e delle autorizzazioni, ecc.
La differenza tra le richieste PUT e PATCH si riflette nel modo in cui il server elabora l'entità inclusa per modificare la risorsa identificata dall'URI di richiesta. In una richiesta PUT , l'entità inclusa viene considerata una versione modificata della risorsa memorizzata sul server di origine e il client richiede la sostituzione della versione archiviata. Con PATCH , tuttavia, l'entità inclusa contiene una serie di istruzioni che descrivono come modificare una risorsa attualmente residente sul server di origine per produrre una nuova versione. Il
metodo PATCH influenza la risorsa identificata dall'URI di richiesta e anche
MAGGIOavere effetti collaterali su altre risorse; cioè, nuove risorse possono essere create, o esistenti, modificate, mediante l'applicazione di un PATCH .
Per quanto ne so, il verbo PATCH non viene utilizzato come nelle applicazioni rails ... A quanto ho capito, il verbo patch RFC dovrebbe essere usato per inviare istruzioni patch come quando si fa una differenza tra due file. Invece di inviare nuovamente l'intera entità, si invia una patch che potrebbe essere molto più piccola rispetto al rinvio dell'intera entità.
Immagina di voler modificare un file enorme. Si modificano 3 righe. Invece di rispedire il file, devi solo inviare il diff. Tra i lati positivi, l'invio di una richiesta di patch potrebbe essere utilizzato per unire i file in modo asincrono. Un sistema di controllo versione potrebbe potenzialmente utilizzare il verbo PATCH per aggiornare il codice in remoto.
Un altro possibile caso d'uso è in qualche modo correlato ai database NoSQL, è possibile archiviare documenti. Supponiamo che utilizziamo una struttura JSON per inviare avanti e indietro i dati dal server al client. Se volessimo eliminare un campo, potremmo usare una sintassi simile a quella in mongodb per $ unset . In realtà, il metodo usato in mongodb per aggiornare i documenti potrebbe essere probabilmente usato per gestire patch json.
Prendendo questo esempio:
db.products.update(
{ sku: "unknown" },
{ $unset: { quantity: "", instock: "" } }
)
Potremmo avere qualcosa del genere:
PATCH /products?sku=unknown
{ "$unset": { "quantity": "", "instock": "" } }
Infine, ma non meno importante, le persone possono dire quello che vogliono sui verbi HTTP. C'è solo una verità, e la verità è nelle RFC.