Requests: 418 ๋‚˜๋Š” ์ฐป์ฃผ์ „์ž

์— ๋งŒ๋“  2017๋…„ 08์›” 11์ผ  ยท  22์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: psf/requests

์š”์ฒญ์€ status_codes.py 418 I'm a Teapot ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์Šค๋Š” RFC2324, Hyper Text Coffee Pot Control Protocol(HTCPCP/1.0)์ž…๋‹ˆ๋‹ค. ์ œ๋ชฉ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค - HTCPCP/1.0์€ HTTP/1.x๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

HTCPCP๋Š” 4์›” 1์ผ Larry๊ฐ€ ์‚ฌ๋žŒ๋“ค์ด HTTP๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋‚จ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๋†๋‹ด์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„ HTTP ์ž์ฒด๋ฅผ ๋‚จ์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ HTTP ์Šคํƒ์—์„œ HTCPCP์˜ ์ผ๋ถ€๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ HTCPCP 418 I'm a Teapot ์ƒํƒœ ์ฝ”๋“œ์— ๋Œ€ํ•œ Node์˜ ์ง€์›์€ HTTP ์ž‘์—… ๊ทธ๋ฃน์—์„œ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉ๋˜์–ด ์‹ค์ œ ๋ชฉ์ ์œผ๋กœ HTTP์—์„œ 418์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ์—ฌ๋ถ„์˜ 4xx HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ์žˆ์ง€๋งŒ HTTP์˜ ์˜๋ฏธ๋Š” (๋ฐ”๋ผ๊ฑด๋Œ€) ์˜ค๋žซ๋™์•ˆ ์ง€์†๋  ๊ฒƒ์ด๋ฏ€๋กœ ์–ธ์  ๊ฐ€๋Š” ์ด ์ฝ”๋“œ ํฌ์ธํŠธ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ์—์„œ 418์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” HTTP ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์ž์ฒด ์ •์˜์— ์˜ํ•ด์„œ๋„). ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์žฌ๋ฏธ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ , ๋ช‡๋ช‡ ์‚ฌ๋žŒ๋“ค์ด ์žฌ๋ฏธ๋ฅผ ์œ„ํ•ด ๊ตฌํ˜„์„ ๋‘๋“œ๋ฆฐ ๊ฒƒ์„ ์••๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ํ•ต์‹ฌ ํ”„๋กœํ† ์ฝœ์„ ์˜ค์—ผ์‹œ์ผœ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋น„ํ‘œ์ค€ ์˜๋ฏธ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Node๋ฅผ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”,

/cc @๋ฃจ์นด์‚ฌ

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

418์€ RFC 7231์˜ HTTP ์ƒํƒœ ์ฝ”๋“œ ์‚ฌ์–‘์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ์กฐ์ฐจ๋„ ์—ฌ๊ธฐ ์—์„œ ๊ตฌํ˜„

๋ชจ๋“  22 ๋Œ“๊ธ€

BTW, ์ด๊ฒƒ์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค๋กœ ์—ฐ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ์ฝ”๋“œ ๋ผ์ธ: https://github.com/requests/requests/blob/master/requests/status_codes.py#L55

200 OK์˜ ๋Œ€์ฒด ๋ฒ„์ „์„ ์ฐธ๊ณ ํ•˜์„ธ์š”: https://github.com/requests/requests/blob/master/requests/status_codes.py#L13

๋ญ. ์ €๋ฅผ ๊ฑฑ์ •ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ ์œ ๋‹ˆ์ฝ”๋“œ์™€ ๋ฐฑ์Šฌ๋ž˜์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์€ ๊ทธ๊ฒƒ๋“ค์„ ๋ฐฉ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ์ด๊ฒƒ์€ ์—ญ๋ฐฉํ–ฅ ์กฐํšŒ ์ „์šฉ์ž…๋‹ˆ๋‹ค. I'm a teapot๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜ ๊ดœ์ฐฎ๋„ค. ๋ฌธ์ œ๋Š” ๊ตฌํ˜„์ด _๊ฒฐ๊ตญ_ ๋ฌธ์ œ๊ฐ€ ๋  ์ƒํƒœ ์ฝ”๋“œ์˜ ์‹ค์ œ ์‚ฌ์šฉ์„ ๋ฐฐ์ œํ•˜๋Š” ์ฆ๊ฑฐ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์œ ์‚ฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” https://github.com/nodejs/node/issues/14644 ๋ฐ https://github.com/golang/go/issues/21326 ์„ ์ฐธ์กฐ ํ•˜์‹ญ์‹œ์˜ค .

420 ๋ฐ ์นœ๊ตฌ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ํ•œ ์ œ๊ฑฐํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

HTTPbin.org๋Š” ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :)

๊ฐœ๋ณ„ ์„œ๋ฒ„, ๋‚˜๋Š” ๋œ ๊ฑฑ์ •ํ•ฉ๋‹ˆ๋‹ค :)

ํ™๋ณด๋ฅผ ๋ณด๋‚ด์„ธ์š”!

ํ•˜์ง€๋งŒ 3.0.0 ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•ด ๋งŒ๋“ค๋ฉด ์ด๊ฒƒ์€ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋‹ค๋ฆฌ๋‹ค! ์ €๋Š” http://save418.com (https://github.com/WhataShane/save418) ๋’ค์— ์žˆ๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 418๊ณผ ๊ฐ™์€ ๋ฌดํ•ดํ•œ ๊ฐœ๊ทธ๋ฅผ ์šฐ์—ฐํžˆ ์ ‘ํ•˜๋Š” ๊ฒƒ์„ ์ฆ๊น๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋งˆ๊ฐ์ผ์„ ๋งž์ถฐ์•ผ ํ•˜๊ณ  ์ƒ์‚ฌ๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ์•ผ๋‹จ์„ ์น˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ž…๊ฐ€์— ๋ฏธ์†Œ๋ฅผ ์ง“๊ฒŒ ๋งŒ๋“œ๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋ฌด์‹ค ํ•˜๋‚˜๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Š” ๊ฒƒ์„ ๋ณด๋ฉด ์ •๋ง ๋ถ€๋„๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

418์— ๋Œ€ํ•œ ์ฃผ์žฅ์„ ์•„์ฃผ ์„ค๋“๋ ฅ ์žˆ๊ฒŒ ์š”์•ฝํ•œ Go ์Šค๋ ˆ๋“œ์˜ @romellem ์„ ์ธ์šฉ

๋ถ„๋ช…ํžˆ ํ•˜์ž๋ฉด, 400 ๋ธ”๋ก์ด ๋‹ค ๋–จ์–ด์ง€๋ฉด 400 ๋ธ”๋ก์˜ ์œ ์šฉ์„ฑ์„ ์กฐ๊ธˆ ๋” ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์ถ”๊ฐ€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ฃผ์žฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ž˜๋ชป ์ฝ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด HTTP ์ƒํƒœ ์ฝ”๋“œ์˜ 400๊ฐœ ๋ธ”๋ก์—๋Š” 50๊ฐœ ์ด์ƒ์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 400 ๋ธ”๋ก์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ "๊ณต๊ฐ„"์ด 50% ์ด์ƒ์ธ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ๊ฒฐ์ฝ” ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ์กฐ๊ธฐ ์ตœ์ ํ™”์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(400 ๋ธ”๋ก์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๊ฐ€ ๋ถ€์กฑํ•จ).

๊ฑฐ์น ๊ฒŒ ๋“ค๋ฆฌ๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝ๋ ฅ์„ ํ†ตํ•ด ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์žฌ๋ฏธ์žˆ๋Š” ์ž‘์€ ๋ถ€ํ™œ์ ˆ ๋‹ฌ๊ฑ€์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ์ปดํ“จํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ธ๊ฐ„์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง€๊ณ  ๊ทธ ์ธ๊ฐ„ ์š”์†Œ์˜ ์ž‘์€ ๋ถ€๋ถ„์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค(์ œ ์ƒ๊ฐ์—๋Š”). ๊ท€ํ•˜์˜ ์ฃผ์žฅ์€ ๊ฑด์ „ํ•˜๊ณ  ๋…ผ๋ฆฌ์ ์ด์ง€๋งŒ ์ด ์š”์ฒญ๋œ ๋ณ€๊ฒฝ์€ ์—”์ง€๋‹ˆ์–ด๋ง ๊ฒฌ๊ณ ์„ฑ์˜ ์ •์‹ ์—์„œ Go(๋ฐ ์ž ์žฌ์ ์œผ๋กœ NodeJS)์˜ "์žฌ๋ฏธ"๋ฅผ ์•ฝ๊ฐ„ ๋–จ์–ด๋œจ๋ฆฝ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ์—๋Š” ์ ˆ์ถฉ์•ˆ์ด ๊ฐ€์น˜๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

(๊ทธ๋ž˜๋„ ์—ญ์‚ฌ ๊ฐ•์˜์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์ €๋Š” ํ•ญ์ƒ 418์ด HTTP/1.x ์‚ฌ์–‘์˜ ์ผ๋ถ€๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. "HTCPCP/1.0" ์‚ฌ์–‘์— ๋Œ€ํ•ด์„œ๋Š” ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚)

์žฌ๋ฏธ์žˆ๋Š” ๋ถ€ํ™œ์ ˆ ๋‹ฌ๊ฑ€์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ์ž์ฒด๋ฅผ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ด์ง€๋งŒ ๋„ˆ๋ฌด ์‹ฌ๊ฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. :)

์ด๊ฒƒ์€ "๋„ˆ๋ฌด ์‹ฌ๊ฐํ•˜๊ฒŒ"์˜ ๋ผ์ธ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์ƒˆ๋กœ์šด RFC๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์‚ฌ์–‘์˜ ์ผ๋ถ€๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•œ ๋‹ต์ด ์•„๋‹™๋‹ˆ๊นŒ?

@tSavo ๋ถ„๋ช…ํžˆ!

418์€ RFC 7231์˜ HTTP ์ƒํƒœ ์ฝ”๋“œ ์‚ฌ์–‘์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ์กฐ์ฐจ๋„ ์—ฌ๊ธฐ ์—์„œ ๊ตฌํ˜„

์—ด์‡ ๋ฅผ ์ฃผ์„ธ์š”.

๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด, ๋‚˜๋จธ์ง€ ์š”์ฒญ ํŒ€์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ 418 ๋งคํ•‘์„ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์žฌ๋ฏธ๋Š” ์žˆ์ง€๋งŒ)ํ•˜์ง€๋งŒ ๋™์˜ ์ด์œ  ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ ์žฌ๋ฏธ ๋ถ€ํ™œ์ ˆ ๋‹ฌ๊ฑ€์˜ ์ˆœ์ˆ˜ ์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค : codes.py ์ฝ”๋“œ์— ์ด์œ  ๋ฌธ๊ตฌ ๋Œ€์‘ ๊ด€๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ฃผ์–ด์ง„ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‚˜ํƒ€๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋ชจ๋“  ์ด์œ  ๋ฌธ๊ตฌ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ˆœ๊ฐ„ I'm A Teapot. ์ด๊ฒƒ์ด ๋ณ€๊ฒฝ๋˜๋ฉด IANA๊ฐ€ ํ• ๋‹นํ•˜๋Š” ๋‹ค๋ฅธ ๋ฌธ๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

@mnot , IETF/IANA๊ฐ€ 418์„ ์ž์œ ๋กญ๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์šฐ๋ฆฌ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์ฐจ๋‹จํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์•ฝ์†์œผ๋กœ ์ด ์‘๋‹ต์„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๐Ÿ˜‰ ์–ด์จŒ๋“  ์ด์œ  ๋ฌธ๊ตฌ๋Š” ์–ด๋ฆฌ์„์€ ๊ฒƒ ๊ฐ™์•„์š”.

ํ™•์ธ; ์ด๊ฒƒ์€ 418์˜ ์žฅ์ ์— ๋Œ€ํ•œ ํ† ๋ก  ํฌ๋Ÿผ์ด ์•„๋‹™๋‹ˆ๋‹ค. @mnot ์ด์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜๋ฅผ ์›ํ•˜์‹œ๋ฉด ์ €์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด: ๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋‚ด๋ฆฐ ๊ฒฐ์ •์— ๋Œ€ํ•ด ๋งค์šฐ ๊ธฐ๋ถ„์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰