何が起きたのか?
501 は「そのやり方は、このサーバーがまだ用意していません」というサインです。 教室で言えば、新しい授業をやろうとしたら、まだ教材も道具も届いていなかった——そんな状況に近いかもしれません。先生が拒んでいるのではなく、設備が追いついていないだけです。
405 が「ここではその方法を許可していない」(意図的な禁止)であるのに対して、501 は「そもそも持っていない」(未実装)。サーバーは将来対応する可能性を残しつつ、今は応えられないと正直に伝えます。
黒板からのひとこと
学校に新しい実験器具が来る前、先生は「来週入ってくるから、その後でやろう」と返します。約束を破っているのではなく、ただ準備が間に合っていない。501 が返ってくるとき、サーバーも同じ姿勢でこちらを待っている、と考えるとわかりやすいです。
クライアント側でできることは限られていて、別のメソッドや別のエンドポイントを試すか、対応版が出るのを待つかです。リトライしても結果は変わりません。
解決への歩み
大丈夫、次はこうしてみよう:
- APIドキュメントで対応メソッドを確認:そもそも実装予定があるのか調べる
- 代替の手段を探す:別のエンドポイントや別バージョンで同じ目的を達成できないか
- サーバー/ライブラリのバージョンを確認:新しい版で対応している可能性
- 未実装機能の優先度を整理(管理者向け):要望の頻度を集め、ロードマップに乗せるか、明確に非対応と告知するかを判断
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 501 Not Implemented
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>501 Not Implemented</h1></body></html>