2015-01-22 15 views
11

Il nostro utente API può ottenere il documento root radice (elenco di raccolta) inviando l'indirizzo API radice all'indirizzo GET. Se invia POST, dovremmo restituire qualcosa. La stessa domanda vale per altri percorsi di risorse, come ad es. invio di PATCH sul percorso della query ecc. Non tutti i metodi hanno significato su alcuni percorsi.Codice di ritorno per il metodo HTTP errato nell'API REST?

Per come la vedo da HTTP RFC è che dovremmo tornare codice 405: metodo non consentito e rimandando l'intestazione Allowed di risposta con l'elenco delle modalità consentite.

Vedo che ad es. API GitHub restituisce 404: Non trovato nel caso che ho spiegato sopra (invio POST alla radice).

Quale sarebbe la risposta corretta? 404 o 405? Vedo lo 405 più sviluppatore-friendly, quindi c'è qualche ragione per non usarlo?

risposta

17

Il comportamento previsto in questo caso, secondo le specifiche HTTP e dalle linee guida REST, sarebbe quello di restituire 405 Method Not Allowed. La risorsa è lì, poiché un GET funziona, quindi uno 404 Not Found sarebbe confuso.

Non ho dimestichezza con il GitHub API ma in alcuni casi vedo che per 403 Forbidden restituisce anche 404 Not Found:

Le richieste che richiedono l'autenticazione restituirà 404 Not Found, invece di 403 Forbidden, in qualche posti. Questo serve a prevenire la fuoriuscita accidentale di repository privati ​​verso utenti non autorizzati.

Forse il comportamento sull'indirizzo di root fa parte di un meccanismo più grande che gestisce generalmente tali casi, chissà. Maybe you could ask?

+0

Grazie. Chiesto;) – igr

+0

Sì, 405 dovrebbe essere. – igr

Problemi correlati