Passa al contenuto principale

2.2. Gestione degli errori

2.2. Gestione degli errori

Ci sono diverse condizioni note in cui una richiesta PATCH può fallire.

Documento di patch malformato (Malformed patch document): Quando il server determina che il documento di patch fornito dal client non è formattato correttamente, DOVREBBE (SHOULD) restituire una risposta 400 (Bad Request). La definizione di mal formattato dipende dal documento di patch scelto.

Documento di patch non supportato (Unsupported patch document): Può essere specificato utilizzando una risposta 415 (Unsupported Media Type) quando il client invia un formato di documento di patch che il server non supporta per la risorsa identificata dal Request-URI. Tale risposta DOVREBBE (SHOULD) includere un'intestazione di risposta Accept-Patch come descritto nella sezione 3.1 per notificare al client quali tipi di media di documento di patch sono supportati.

Richiesta non elaborabile (Unprocessable request): Può essere specificata con una risposta 422 (Unprocessable Entity) ([RFC4918], sezione 11.2) quando il server comprende il documento di patch e la sintassi del documento di patch sembra essere valida, ma il server non è in grado di elaborare la richiesta. Ciò potrebbe includere tentativi di modificare una risorsa in un modo che renderebbe la risorsa non valida; ad esempio, una modifica a un documento XML ben formato che lo renderebbe non più ben formato. Potrebbero esserci anche errori più specifici come "Stato conflittuale (Conflicting State)" come menzionato sopra. In tali casi, il server PUÒ (MAY) includere informazioni sull'errore nel corpo della risposta in modo che l'utente possa determinare cosa c'è che non va con la richiesta di patch.

Risorsa non trovata (Resource not found): Se la risorsa a cui il client sta tentando di applicare la patch non esiste e il server non supporta la creazione di nuove risorse con PATCH, il server restituisce un codice di stato 404 (Not Found).

Stato conflittuale (Conflicting state): Se la richiesta è formattata correttamente e il server supporta il tipo di media utilizzato nel documento di patch, ma il server non è in grado di applicare la patch perché lo stato della risorsa è in conflitto con la patch o la patch creerà un conflitto (ad esempio, una patch che tenta di aggiungere un campo conflittuale, o una richiesta condizionale che fallisce), il server restituisce un codice di stato 409 (Conflict). Il server DOVREBBE (SHOULD) includere informazioni sufficienti nel corpo della risposta affinché il client possa riconoscere la fonte del conflitto.

Modifica conflittuale (Conflicting modification): Se la richiesta è formattata correttamente e il server supporta il tipo di media, ma la patch non può essere applicata alla risorsa perché la risorsa è cambiata dallo stato previsto (ad esempio, la richiesta condizionale è fallita, un ETag forte non corrisponde alla risorsa corrente), il server restituisce un codice di stato 412 (Precondition Failed).

Modifica concorrente (Concurrent modification): Richieste simultanee per modificare una risorsa con PATCH possono avere risultati imprevedibili se i formati di patch utilizzati richiedono che il client lavori da un documento base sottostante (base document). Pertanto, una richiesta PATCH può fallire se aggiornamenti concorrenti causano un conflitto. Tutti questi rischi di modifica concorrente si applicano a qualsiasi interazione in cui più parti apportano modifiche alla stessa risorsa. Il metodo PATCH non introduce rischi unici, ma vale la pena evidenziarlo in questa sezione.

Nota: Per tutte le risposte, il server può includere informazioni sull'errore nel corpo della risposta in modo che il client possa determinare cosa è andato storto o cosa fare dopo.