HTTP 501 Not Implemented

Le serveur ne peut tout simplement pas le faire : la fonctionnalité demandée — généralement la méthode HTTP — n'est pas prise en charge du tout.

Ce que signifie HTTP 501

HTTP 501 Not Implemented signifie que le serveur ne reconnaît pas ou ne prend pas en charge la fonctionnalité requise pour satisfaire la requête. La spécification le réserve principalement aux méthodes HTTP non reconnues — le serveur ne peut traiter le verbe pour aucune ressource, contrairement à 405 où le verbe est connu mais interdit pour cette URL.

En pratique, 501 apparaît aussi chez des proxys et des serveurs anciens confrontés à des requêtes pour lesquelles ils n'ont jamais été conçus (verbes WebDAV, PATCH sur d'anciennes stacks), ou comme espace réservé sur des backends à moitié configurés.

Causes courantes des erreurs 501

  • Une méthode HTTP que le serveur n'implémente pas du tout (par exemple PATCH ou des verbes WebDAV sur un ancien serveur).
  • Un proxy ou une passerelle recevant une méthode de requête qu'il ne peut pas transmettre.
  • Un endpoint provisoire déployé avant que son implémentation ne soit terminée.
  • Des noms de méthode mal formés provenant de clients bogués (fautes de frappe comme GETT).

Comment la corriger en tant que développeur

  • Vérifiez la méthode exacte envoyée — les fautes de frappe et les verbes personnalisés mal orthographiés sont étonnamment fréquents.
  • Si la méthode est légitime (par exemple PATCH), mettez à jour ou configurez le serveur/framework pour la prendre en charge, ou faites-la transiter via POST avec un en-tête d'override là où la stack le permet.
  • Distinguez cela de 405 : si une seule route rejette le verbe, corrigez la route (domaine du 405) ; si c'est tout le serveur, il s'agit d'une lacune de capacité de la plateforme.
  • Ne renvoyez pas 501 pour des fonctionnalités inachevées dans des API de production — préférez 404 ou un feature flag, car 501 est cacheable par défaut.

Exemple de réponse

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

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

FAQ

Quelle est la différence entre 501 et 405 ?

405 signifie que l'URL existe mais rejette cette méthode (voir l'en-tête Allow). 501 signifie que le serveur ne prend en charge la méthode pour aucune ressource.

Une erreur 501 est-elle temporaire ?

Généralement non — cela signale une capacité manquante, pas une panne. Cela ne disparaît que lorsque le serveur acquiert le support de la fonctionnalité demandée.

Pourquoi ma requête PATCH renvoie-t-elle 501 ?

Le serveur ou un proxy intermédiaire est antérieur à la prise en charge de PATCH. Mettez à jour la stack, activez la méthode, ou utilisez un override de méthode basé sur POST.