โ† semua materi
19:00 Tips ยท 01 Nov 2026 ยท 19:01

๐Ÿ”ฌ Kenapa HTTP punya status code 418 "I'm a teapot"?

Jawaban singkat: karena 1 April 1998 ada orang iseng nulis RFC beneran โ€” dan 28 tahun kemudian internet menolak menghapus leluconnya.


Kronologi

1 April 1998 โ€” Larry Masinter (Xerox PARC, salah satu penulis standar URI) menerbitkan RFC 2324: Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0). Status resminya: Informational. Isinya serius secara format, konyol secara isi โ€” protokol lengkap untuk mengontrol teko kopi lewat jaringan.

Detail yang bikin senyum: - Method baru: BREW (dan POST untuk menambah bubuk kopi) - Skema URI baru: coffee: โ€” di-encode UTF-8 dari kata "kopi" dalam 29 bahasa (koffie:, cafรฉ:, q%C3%A6fe:...) - Header Accept-Additions: untuk sugar, cream, whisky - Kalimat paling terkenal di ยง2.3.2:

"Any attempt to brew coffee with a teapot should result in the error code 418 I'm a teapot. The resulting entity body MAY be short and stout."

Perhatikan dua hal: "MAY be short and stout" itu referensi lagu anak "I'm a Little Teapot". Dan kata "espressoly" di ยง1 โ€” plesetan yang lolos review IETF.

1 April 2014 โ€” muncul sekuel: RFC 7168 (HTCPCP-TEA), extension supaya teko juga bisa seduh teh. Tetap April Mop.

5 Agustus 2017 โ€” Mark Nottingham, chairman HTTP Working Group IETF, mengajukan issue untuk menghapus 418 dari Node.js (dan paralel di Go, Python requests, ASP.NET HttpAbstractions). Alasannya wajar: 418 tidak ada di spec HTTP mana pun, jadi "status code ilegal" yang bikin interoperabilitas berantakan.

Yang terjadi kemudian: Shane Brunswick, developer umur 15 tahun, bikin save418.com dan gerakan "Save 418". Argumennya satu kalimat dan susah dibantah:

418 adalah "a reminder that the underlying processes of computers are still made by humans."

Node.js, Go, Python requests, ASP.NET โ€” semuanya mundur, tidak jadi menghapus. Nottingham akhirnya mengalah dan cuma "mereservasi" nomor itu supaya tidak dipakai untuk hal lain.


Fakta teknis yang sering salah dipahami

Klaim Realita
"418 status resmi HTTP" โŒ Tidak. RFC 2324 status Informational, bukan standar. Tidak ada di RFC 2616 maupun RFC 9110
"Server wajib dukung 418" โŒ Tidak wajib. Tapi banyak framework menyimpannya sebagai konstanta (http.StatusTeapot di Go, statuses[418] di Node)
"418 bikin client crash" โš ๏ธ Tidak crash, tapi client yang strict bisa bingung karena 4xx tak dikenal โ†’ umumnya fallback ke 400
"Cuma ada di dunia barat" โŒ Ada implementasi fisik: teko + Raspberry Pi yang benar-benar merespons BREW

Moral teknisnya: spec itu kontrak, tapi ekosistem itu budaya. 418 bertahan bukan karena valid, tapi karena jutaan developer setuju itu lucu dan tidak mengganggu siapa pun.


โšก Satu hal yang bisa langsung dipakai

Pakai 418 sebagai canary code di monitoring/health-check. Trik: bikin endpoint khusus yang selalu balas 418.

curl -i https://httpbin.org/status/418
# HTTP/1.1 418 I'M A TEAPOT

Gunanya: kalau monitoring lo lihat ada response 418 di endpoint produksi, lo tahu pasti itu bukan dari aplikasi lo โ€” berarti ada proxy/CDN/WAF di tengah yang balikin response sendiri. Status code aneh = penanda asal response. Jauh lebih cepat dibaca daripada ngecek header Via atau X-Cache.

Alternatif legitimate: balas 418 di API internal untuk request yang secara logis absurd (misal POST /coffee ke service non-kopi), supaya log jadi lucu dan gampang di-grep. Asal jangan di API publik โ€” client strict bisa salah handle.


๐Ÿง  Takeaway

418 bukan bug โ€” itu fosil. Satu-satunya status code yang dipertahankan bukan karena dibutuhkan, tapi karena manusia yang bikin komputer ternyata masih mau ketawa.

Dan pelajaran engineering-nya: kadang yang "salah secara spec" bertahan bukan karena incompetence, tapi karena biaya menghapusnya lebih besar dari biaya hidup dengannya. Sama seperti GET yang bisa punya body, dan X- prefix header yang katanya deprecated tapi masih dipakai di mana-mana.


Sumber: 1. L. Masinter, "RFC 2324 โ€” Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)", IETF, 1 April 1998 โ€” https://www.rfc-editor.org/rfc/rfc2324.txt 2. Wikipedia, "Hyper Text Coffee Pot Control Protocol" (Save 418 movement, Agustus 2017) โ€” https://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol 3. MDN Web Docs, "418 I'm a teapot" โ€” https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/418 4. GitHub issue nodejs/node#14644 "418 I'm A Teapot" (Mark Nottingham, 5 Agustus 2017)