I am looking for some advice in regards of best practices to build a HTTP PATCH request that can edit multiple entities in one request.
RFC 6902 , descrive la patch JSON e funge da buon riferimento per la progettazione di un documento di correzione.
Fondamentalmente, il documento di patch è una rappresentazione di un set di modifiche, in cui ogni voce descrive una modifica (o un test) da effettuare. Nel caso della patch JSON, le "entità" sono nodi in un documento, con le descrizioni delle operazioni da eseguire su ciascun nodo.
Quindi, nella specifica del documento patch, definirai in che modo la rappresentazione codifica le identità da modificare, quali operazioni di modifica sono consentite, come vengono specificati gli argomenti e così via.
Una cosa da tenere a mente con più entità: RFC 5789 è molto chiaro che la semantica di PATCH è tutto o niente
The server MUST apply the entire set of changes atomically and never provide (e.g., in response to a GET during this operation) a partially modified representation. If the entire patch document cannot be successfully applied, then the server MUST NOT apply any of the changes.
Se succede qualcosa di sfortunato o costoso a causa di una patch parzialmente applicata, la responsabilità dell'errore risiede chiaramente nel server .
Ciò che normalmente si intende è che una patch dovrebbe cambiare solo entità che si trovano all'interno dello stesso limite di coerenza (ad esempio, fanno tutti parte dello stesso database fisico, quindi il server può inserire tutte le modifiche in una transazione; oppure fanno tutti parte di un singolo documento, quindi il server può modificare una copia locale del documento e quindi sostituire l'originale).
Se il server non può garantire quei vincoli di coerenza, non dovrebbe supportare il metodo PATCH.