2012-02-23 8 views
17

Nel mio client API RESTful si potrebbe tentare di pubblicare informazioni già presenti nel database, questo non è un errore, piuttosto qualcosa che il client può ignorare, magari avvisare l'utente del dublicato già esistente.Qual è un codice di stato di risposta corretto per la richiesta POST REST quando viene trovato un duplicato?

Ora sto restituendo 409 Conflict e oggetto già esistente nel corpo della risposta. Sento che è corretto perché:

La richiesta non può essere completata a causa di un conflitto con l'attuale stato della risorsa. Questo codice è consentito solo in situazioni in cui è previsto che l'utente possa risolvere il conflitto e invia nuovamente la richiesta. Il corpo della risposta DOVREBBE includere abbastanza informazioni per l'utente per riconoscere l'origine del conflitto. Idealmente, l'entità di risposta includerebbe informazioni sufficienti per l'utente o l'agente utente per risolvere il problema; tuttavia, ciò potrebbe non essere possibile e non è richiesto. via restpatterns.org

e, in generale, sembra che 409 è più associato con PUT.

Qual è la risposta corretta in questo caso? Potrebbe essere 303 Vedi intestazione Altro e Luogo?

risposta

14

Non sono sicuro che ci sia una risposta corretta. Stiamo restituendo un 409 con un messaggio che si tratta di una risorsa duplicata. Includiamo anche hypermedia per quella risorsa. Sembra che potresti anche usare un 400 - Bad Request ma che sembrava troppo generico. Potevo vedere anche il 303 funzionante. Volevo indicare che c'era un errore, quindi siamo andati con la 409.

Problemi correlati