HTTP 501 Not Implemented

Sunucu bunu basitçe yapamaz: istenen işlevsellik — genellikle HTTP metodu — hiç desteklenmiyor.

HTTP 501 ne anlama gelir

HTTP 501 Not Implemented, sunucunun isteği yerine getirmek için gereken işlevselliği tanımadığı veya desteklemediği anlamına gelir. Spesifikasyon bunu esas olarak tanınmayan HTTP metotları için ayırır — sunucu, herhangi bir kaynak için bu metodu işleyemez; bu, metodun bilindiği ancak bu URL için yasak olduğu 405'ten farklıdır.

Pratikte 501, hiç tasarlanmadıkları isteklerle karşılaşan proxy'lerde ve eski sunucularda da (WebDAV metotları, eski yapılarda PATCH) veya yarım yapılandırılmış backend'lerde bir yer tutucu olarak ortaya çıkar.

501 hatalarının yaygın nedenleri

  • Sunucunun hiç uygulamadığı bir HTTP metodu (örneğin eski bir sunucuda PATCH veya WebDAV metotları).
  • İletemeyeceği bir istek metodu alan bir proxy veya ağ geçidi.
  • Uygulaması tamamlanmadan önce dağıtılan bir taslak (stub) uç nokta.
  • Hatalı istemcilerden gelen bozuk metot adları (GETT gibi yazım hataları).

Bir geliştirici olarak nasıl düzeltilir

  • Gönderilen kesin metodu kontrol edin — yazım hataları ve yanlış büyük/küçük harfli özel fiiller şaşırtıcı derecede yaygındır.
  • Metot meşruysa (örneğin PATCH), sunucuyu/çerçeveyi bunu destekleyecek şekilde güncelleyin veya yapılandırın, ya da yapının izin verdiği yerlerde geçersiz kılma başlığıyla POST üzerinden tünelleyin.
  • 405'ten ayırt edin: yalnızca bir rota fiili reddediyorsa, rotayı düzeltin (405 alanı); tüm sunucu reddediyorsa, bu bir platform yetenek eksikliğidir.
  • Üretim API'lerinde tamamlanmamış özellikler için 501 döndürmeyin — 501 varsayılan olarak önbelleğe alınabildiğinden 404 veya bir özellik bayrağı tercih edin.

Örnek yanıt

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

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

SSS

501 ile 405 arasındaki fark nedir?

405, URL'nin var olduğu ancak bu metodu reddettiği anlamına gelir (Allow başlığına bakın). 501, sunucunun metodu hiçbir kaynak için desteklemediği anlamına gelir.

501 hatası geçici midir?

Genellikle hayır — bu, bir kesintiyi değil, eksik bir yeteneği gösterir. Yalnızca sunucu istenen işlevsellik için destek kazandığında ortadan kalkar.

PATCH isteğim neden 501 döndürüyor?

Sunucu veya araya giren bir proxy, PATCH desteğinden öncesine ait. Yapıyı güncelleyin, metodu etkinleştirin veya POST tabanlı bir metot geçersiz kılma kullanın.