HTTP 501 Not Implemented

Il server semplicemente non può farlo: la funzionalità richiesta — solitamente il metodo HTTP — non è supportata affatto.

Cosa significa HTTP 501

HTTP 501 Not Implemented significa che il server non riconosce o non supporta la funzionalità richiesta per soddisfare la richiesta. La specifica lo riserva principalmente ai metodi HTTP non riconosciuti — il server non può gestire il verbo per nessuna risorsa, a differenza del 405, dove il verbo è noto ma non consentito per questo URL.

In pratica, il 501 compare anche su proxy e server legacy che ricevono richieste per cui non sono mai stati progettati (verbi WebDAV, PATCH su stack datati), oppure come segnaposto su backend configurati a metà.

Cause comuni degli errori 501

  • Un metodo HTTP che il server non implementa affatto (ad esempio PATCH o verbi WebDAV su un server datato).
  • Un proxy o gateway che riceve un metodo di richiesta che non può inoltrare.
  • Un endpoint stub distribuito prima che la sua implementazione fosse completata.
  • Nomi di metodo malformati generati da client difettosi (refusi come GETT).

Come risolverlo da sviluppatore

  • Controlla il metodo esatto inviato — refusi e verbi personalizzati con maiuscole/minuscole errate sono sorprendentemente comuni.
  • Se il metodo è legittimo (ad esempio PATCH), aggiorna o configura il server/framework per supportarlo, oppure instradalo via POST con un header di override dove lo stack lo consente.
  • Distinguilo dal 405: se solo una route rifiuta il verbo, correggi la route (territorio del 405); se lo fa l'intero server, è una lacuna di capacità della piattaforma.
  • Non restituire 501 per funzionalità incomplete in API di produzione — preferisci 404 o un feature flag, poiché 501 è cacheable per impostazione predefinita.

Esempio di risposta

HTTP/1.1 501 Not Implemented
Content-Type: application/json

{"error":"not_implemented","message":"PATCH is not supported by this server"}

FAQ

Qual è la differenza tra 501 e 405?

405 significa che l'URL esiste ma rifiuta questo metodo (vedi l'header Allow). 501 significa che il server non supporta affatto il metodo per nessuna risorsa.

Un errore 501 è temporaneo?

Di solito no — segnala una capacità mancante, non un'interruzione del servizio. Scompare solo quando il server acquisisce il supporto per la funzionalità richiesta.

Perché la mia richiesta PATCH restituisce 501?

Il server o un proxy intermedio è precedente al supporto di PATCH. Aggiorna lo stack, abilita il metodo, oppure usa un override del metodo basato su POST.