何が起きたのか?
418 は「コーヒーを淹れてほしいと頼まれたけれど、自分はティーポットなので無理です」というサインです。 真面目な仕様の中に紛れ込んだ、HTTP 唯一のジョークステータスです。1998 年のエイプリルフールに公開された RFC 2324 (Hyper Text Coffee Pot Control Protocol) で定義されました。
実務でこのコードに出会うことは稀で、出会ったとしてもアプリ独自のイースターエッグかボット対策である場合がほとんどです。番号は 451 (Unavailable For Legal Reasons) と少しだけ似ていますが、こちらは華氏 451 度の本のほうにちなんだ別コードです。
黒板からのひとこと
教室で、化学の先生に体育の質問をしてしまったら、「専門外で力になれないけど、隣の先生に聞いてみて」と返されるでしょう。418 はそれよりさらに大袈裟に「自分はそもそもその役割じゃない」と返している、お茶目な応答です。
仕様としては遊びでも、HTTP の世界に「ステータスコードに人格を持たせる」という発想を持ち込んだ歴史的な番号でもあります。技術書のあちこちで顔を出す名物コード、と覚えておくと十分です。
解決への歩み
大丈夫、次はこうしてみよう:
- そのサービスのドキュメントを読む:独自の意味で使っている可能性
- 本物のコーヒー API を探す:仕様としては実装する必要のないコード
- 404 や 400 と取り違えていないか確認:たまにフレームワークの遊びで返すことも
- API 設計のユーモアと節度(管理者向け):ジョークコードの利用は社内ガイドラインを揃えてから
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 418 I'm a teapot
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>418 I'm a teapot</h1></body></html>