HTTP 501 Not Implemented
サーバーがそれを実行できないという意味です。要求された機能 — 通常は HTTP メソッド — がまったくサポートされていません。
HTTP 501 の意味
HTTP 501 Not Implemented は、リクエストを満たすために必要な機能をサーバーが認識またはサポートしていないことを意味します。仕様では主に認識されない HTTP メソッドのために予約されており、サーバーはどのリソースに対してもそのメソッドを処理できません。これは、メソッド自体は認識されているものの、その URL に対しては許可されていない 405 とは異なります。
実際には、501 はプロキシやレガシーサーバーが想定していなかったリクエスト(WebDAV のメソッドや、古いスタックでの PATCH など)を受け取った場合や、半分しか設定が済んでいないバックエンドのプレースホルダーとしても現れます。
501 エラーのよくある原因
- サーバーがまったく実装していない HTTP メソッドです(例: 古いサーバーでの PATCH や WebDAV のメソッド)。
- 転送できないリクエストメソッドを受け取ったプロキシやゲートウェイです。
- 実装が完了する前にデプロイされたスタブエンドポイントです。
- 不具合のあるクライアントによる不正な形式のメソッド名です(GETT のようなタイプミス)。
開発者としての対処法
- 送信されている正確なメソッドを確認してください — タイプミスや大文字小文字を誤ったカスタム動詞は驚くほどよくあります。
- そのメソッドが正当なもの(例: PATCH)である場合は、サーバーやフレームワークをアップグレードまたは設定してサポートするか、スタックが許す範囲でオーバーライドヘッダー付きの POST 経由でトンネリングしてください。
- 405 と区別してください。1 つのルートだけがそのメソッドを拒否している場合はそのルートを修正します(405 の範疇)。サーバー全体が拒否している場合は、プラットフォームの機能不足です。
- 本番 API では未完成の機能に対して 501 を返さないでください — 501 はデフォルトでキャッシュ可能なため、404 やフィーチャーフラグを使うことをお勧めします。
レスポンス例
HTTP/1.1 501 Not Implemented
Content-Type: application/json
{"error":"not_implemented","message":"PATCH is not supported by this server"}よくある質問
501 と 405 の違いは何ですか?
405 は URL は存在するもののこのメソッドを拒否していることを意味します(Allow ヘッダーを確認してください)。501 はサーバーがどのリソースに対してもそのメソッドをサポートしていないことを意味します。
501 エラーは一時的なものですか?
通常は一時的ではありません — これは障害ではなく、機能が欠けていることを示すものです。サーバーが要求された機能のサポートを獲得したときにのみ解消されます。
なぜ PATCH リクエストが 501 を返すのですか?
サーバーまたは中間のプロキシが PATCH サポート以前のものです。スタックをアップグレードし、メソッドを有効にするか、POST ベースのメソッドオーバーライドを使用してください。