4. Request Methods

4.1 Overview

์š”์ฒญ ๋ฉ”์„œ๋“œ ํ† ํฐ์€ ์š”์ฒญ ์˜๋ฏธ๋ก ์˜ ์ฃผ ์†Œ์Šค๋กœ์„œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ํ•œ ๋ชฉ์ ๊ณผ ์„ฑ๊ณต์ ์ธ ๊ฒฐ๊ณผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ฐ”๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

HTTP๋Š” ์›๋ž˜ ๋ถ„์‚ฐ ๊ฐ์ฒด ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.๋ฉ”์„œ๋“œ ํ† ํฐ์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฐ์ฒด ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์˜ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.

๋ถ„์‚ฐ๋œ ๊ฐ์ฒด์™€ ๋‹ฌ๋ฆฌ, ํš์ผํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ [REST]์—์„œ ๋” ๋‚˜์€ ๊ฐ€์‹œ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, HTTP์˜ ํ‘œ์ค€ํ™”๋œ ์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌ์†Œ์Šค์— ๊ตญํ•œ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ผ๋‹จ ์ •์˜๋˜๋ฉด, ํ‘œ์ค€ํ™”๋œ ๋ฉ”์„œ๋“œ๋Š” ๊ฐ ๋ฆฌ์†Œ์Šค์˜ ๊ทธ ์˜๋ฏธ๋ก ๋“ค์ด ๊ตฌํ˜„๋˜๊ฑฐ๋‚˜ ํ—ˆ์šฉ๋˜๋Š”์ง€ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์–ด๋–ค ๋ฆฌ์†Œ์Šค์— ์ ์šฉ๋  ๋•Œ๋Š” ๋™์ผํ•œ ์˜๋ฏธ๋ก ๋“ค์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

  • ๋ชจ๋“  ๋ฒ”์šฉ ์„œ๋ฒ„๋Š” GET ๋ฐ HEAD ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋‹ค. (OPTIONAL)

4.2 Common Method Properties

4.2.1 Safe Methods

์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ์ •์˜๋œ ์˜๋ฏธ๋ก ์ด ๋ณธ์งˆ์ ์œผ๋กœ ์ฝ๊ธฐ ์ „์šฉ์ธ ๊ฒฝ์šฐ, ์ฆ‰ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ์•ˆ์ „ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์šฉํ•œ ๊ฒฐ๊ณผ ์›์„œ๋ฒ„์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ์˜ˆ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ โ€œsafeโ€๋กœ ๊ฐ„์ฃผ๋œ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ํ–‰๋™์„ ์š”๊ตฌํ•˜์ง€ ์•Š์•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ๋ฌผ์„ ์ˆ˜ ์—† ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋ฒ„๋Š” ๋ฉ”์„œ๋“œ์— ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ์‘๋‹ต์ด ์™„๋ฃŒ๋  ๋•Œ ๋กœ๊ทธ ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ, ๋กœ๊ทธ ์ €์žฅ์†Œ๊ฐ€ ๊ฐ€๋“ ์ฐจ์„œ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋  ์ˆ˜ ์žˆ๋”๋ผ๋„ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผ๋œ๋‹ค.

์ด ๋ช…์„ธ์— ์˜ํ•ด ์ •์˜๋œ ์š”์ฒญ ๋ฉ”์„œ๋“œ ์ค‘ GET, HEAD, OPTION ๋ฐ TRACE ๋ฉ”์„œ๋“œ๋Š” ์•ˆ์ „ํ•˜๋‹ค๊ณ  ์ •์˜๋œ๋‹ค.

์•ˆ์ „ํ•œ ๋ฉ”์„œ๋“œ์™€ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ชฉ์ ์€ ์ž๋™ ๊ฒ€์ƒ‰ ํ”„๋กœ์„ธ์Šค(spider)์™€ ์บ์‹œ ์„ฑ๋Šฅ ์ตœ์ ํ™”(pre-fetching)๊ฐ€ ์œ„ํ•ด๋ฅผ ์ผ์œผํ‚ฌ ์—ผ๋ ค ์—†์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋˜ํ•œ ์ž ์žฌ์ ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ์˜ ์ž๋™ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ ์ ์ ˆํ•œ ์ œ์•ฝ์กฐ๊ฑด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • ๋ฆฌ์†Œ์Šค์˜ ๋ชฉ์ ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด, ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž๋Š” ์•ˆ์ „ํ•œ ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šคํ•  ๋•Œ ํ•ด๋‹น ์ž‘์—…์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ํ—ˆ์šฉํ•˜ ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.(MUST)

4.2.2 Idempotent Methods

์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ์™€์˜ ๋ณต์ˆ˜์˜ ๋™์ผํ•œ ์š”์ฒญ์˜ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์˜๋„๋œ ํšจ๊ณผ๊ฐ€ ๋‹จ์ผ ์š”์ฒญ์˜ ํšจ๊ณผ์™€ ๋™์ผํ•œ ๊ฒฝ์šฐ, โ€œ๋ฉฑ๋“ฑ์„ฑ(idempotent)โ€์œผ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. ์ด ๋ช…์„ธ์— ์˜ํ•ด ์ •์˜๋œ ์š”์ฒญ ๋ฉ”์„œ๋“œ ์ค‘ PUT, DELETE ๋ฐ ์•ˆ์ „ ์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” ๋ฉฑ๋“ฑํ•˜๋‹ค.

4.2.3 Cacheable Methods

์š”์ฒญ ๋ฉ”์„œ๋“œ๋Š” โ€œcacheableโ€์œผ๋กœ ์ •์˜ํ•˜์—ฌ ํ–ฅํ›„ ์žฌ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ˜„์žฌ ๋˜๋Š” ๊ถŒํ•œ ์žˆ๋Š” ์‘๋‹ต ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ๋ฉ”์„œ๋“œ๋Š” ์บ์‹œ ๊ฐ€๋Šฅ์œผ๋กœ ์ •์˜๋œ๋‹ค. ์ด ๊ทœ๊ฒฉ์€ GET, HEAD ๋ฐ POST๋ฅผ ์บ์‹œ ๊ฐ€๋Šฅ์œผ๋กœ ์ •์˜ํ•˜์ง€๋งŒ, ์••๋„์ ์œผ๋กœ ๊ณผ๋ฐ˜์ˆ˜์˜ ์บ์‹œ ๊ตฌํ˜„์€ GET์™€ HEAD๋งŒ ์ง€์›ํ•œ๋‹ค.

4.3 Method Definitions

4.3.1 GET

GET ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ํ˜„์žฌ ์„ ํƒ๋œ ํ‘œํ˜„์˜ ์ „์†ก์„ ์š”์ฒญํ•œ๋‹ค. GET๋Š” ์ •๋ณด ๊ฒ€์ƒ‰์˜ ์ฃผ์š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด์ž ๊ฑฐ์˜ ๋ชจ๋“  ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ์ดˆ์ ์ด๋‹ค.

URI ๋งคํ•‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์›์„œ๋ฒ„๋Š” ์š”์ฒญ์œผ๋กœ ํŒŒ์ผ์„ ์ž…๋ ฅ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ํŒŒ์ผ์„ ์ง์ ‘ ์ „์†กํ•˜์ง€ ์•Š๊ณ  ์ถœ๋ ฅ๋ฌผ ์„ ํ‘œํ˜„์œผ๋กœ ์ „์†กํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์—์„œ Range ํ—ค๋” ํ•„๋“œ([RFC7233]) ๋ฅผ ์ „์†กํ•˜์—ฌ ์„ ํƒ๋œ ํ‘œํ˜„์˜ ์ผ๋ถ€๋งŒ ์ „์†ก์„ ์š”์ฒญํ•˜๋Š” GET์˜ ์˜๋ฏธ๋ฅผ โ€œrange requestโ€๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

4.3.2 HEAD

  • HEAD ๋ฉ”์„œ๋“œ๋Š” GET๊ณผ ๋™์ผํ•˜์ง€๋งŒ, ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์—์„œ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์„ ์ „์†กํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.(MUST NOT)

  • ์„œ๋ฒ„๋Š” HEAD ์š”์ฒญ์— ์‘๋‹ตํ•˜์—ฌ GET ์š”์ฒญ๊ณผ ๋™์ผํ•œ ํ—ค๋” ํ•„๋“œ๋ฅผ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.(SHOULD)

์ด ๋ฉ”์„œ๋“œ๋Š” ํ‘œํ˜„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์ง€ ์•Š๊ณ  ์„ ํƒ๋œ ํ‘œํ˜„์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ ์ดํ„ฐ๋ฅผ ์–ป๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์œ ํšจ์„ฑ, ์ ‘๊ทผ์„ฑ ๋ฐ ์ตœ๊ทผ ์ˆ˜์ •์„ ์œ„ํ•œ ํ•˜์ดํผํ…์ŠคํŠธ ๋งํฌ ํ…Œ์ŠคํŠธ์— ์ข…์ข… ์‚ฌ์šฉ๋œ๋‹ค.

HEAD ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์€ ์บ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์บ์‹œ๋Š” Cache-Control ํ—ค๋” ํ•„๋“œ์— ๋‹ฌ๋ฆฌ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ํ•œ ํ›„์† HEAD ์š”์ฒญ์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.(MAY) ([RFC7234] ์˜ Section 5.2). HEAD ์‘๋‹ต์€ GET์— ๋Œ€ํ•œ ์ด์ „์— ์บ์‹œ๋œ ์‘๋‹ต์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

4.3.3 POST

POST ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค ์š”์ฒญ์— ๋™๋ด‰๋œ ํ‘œํ˜„์„ ๋ฆฌ์†Œ์Šค ์ž์ฒด์˜ ํŠน์ • ์˜๋ฏธ์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์š”์ฒญํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, POST๋Š” ๋‹ค์Œ ๊ธฐ๋Šฅ(๋‹ค๋ฅธ ๊ธฐ๋Šฅ ์ค‘)์— ์‚ฌ์šฉ๋œ๋‹ค.

  • HTML ์–‘์‹์— ์ž…๋ ฅ๋œ ํ•„๋“œ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค์— ์ œ๊ณต;

  • ๊ฒŒ์‹œํŒ, ๋‰ด์Šค ๊ทธ๋ฃน, ๋ฉ”์ผ ๋ชฉ๋ก, ๋ธ”๋กœ๊ทธ ๋˜๋Š” ์œ ์‚ฌํ•œ ๊ธฐ์‚ฌ ๊ทธ๋ฃน์— ๋ฉ”์‹œ์ง€ ๊ฒŒ์‹œ;

  • ์›์„œ๋ฒ„์—์„œ ์•„์ง ์‹๋ณ„๋˜์ง€ ์•Š์€ ์ƒˆ ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ; ๋ฐ

  • ๋ฆฌ์†Œ์Šค์˜ ๊ธฐ์กด ํ‘œํ˜„์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

์›์„œ๋ฒ„๋Š” POST ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์‘๋‹ต ์˜๋ฏธ๋ก ์„ ํ‘œ์‹œํ•˜๋ฉฐ, ์ด ๊ทœ๊ฒฉ์— ์˜ํ•ด ์ •์˜๋œ ์ƒํƒœ ์ฝ”๋“œ๋Š” ๊ฑฐ์˜ ๋ชจ๋‘ POST(206(Partial Content), 304(Not Modified), 416(Range Not Satisfiable)์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ˆ˜์‹ ๋  ์ˆ˜ ์žˆ๋‹ค.

  • POST ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋กœ์จ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์›์„œ๋ฒ„์— ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ, ์›์„œ๋ฒ„๋Š” ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋™์•ˆ ์ƒ์„ฑ๋œ ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค์˜ ์‹๋ณ„์ž๋ฅผ ์ œ๊ณตํ•˜๋Š” Location ํ—ค๋” ํ•„๋“œ(Section 7.1.2)๋ฅผ ํฌํ•จํ•˜๋Š” 201(Created)์‘๋‹ต๊ณผ ์š”์ฒญ์˜ ์ƒํƒœ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํ‘œํ˜„์„ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.(SHOULD)

POST ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์€ ๋ช…์‹œ์ ์ธ ์‹ ์„ ๋„ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์บ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค ([RFC7234]์˜ Section 4.2.1 ์ฐธ์กฐ). ๊ทธ๋Ÿฌ๋‚˜ POST ์บ์‹ฑ์€ ๋„๋ฆฌ ๊ตฌํ˜„๋˜์ง€ ์•Š๋Š”๋‹ค.

4.3.4 PUT

PUT ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์˜ ์ƒํƒœ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ ๋ฉ”์‹œ์ง€ ํŽ˜์ด๋กœ๋“œ์— ๋™๋ด‰๋œ ํ‘œํ˜„์— ์˜ํ•ด ์ •์˜๋œ ์ƒํƒœ๋กœ ๋Œ€์ฒดํ•  ๊ฒƒ์„ ์š”์ฒญํ•œ๋‹ค.

  • ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ˜„์žฌ ํ‘œํ˜„์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๊ณ  PUT์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค๋ฉด, ์›์„œ๋ฒ„๋Š” 201 (Created) ์‘๋‹ต์„ ์ „์†กํ•˜์—ฌ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ์—๊ฒŒ ์•Œ๋ ค์•ผ ํ•œ๋‹ค.(MUST)

  • ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ˜„์žฌ ํ‘œํ˜„์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ทธ ํ‘œํ˜„์ด ๋™๋ด‰๋œ ํ‘œํ˜„ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์ •๋˜๋Š” ๊ฒฝ์šฐ, ์›์„œ๋ฒ„๋Š” ์š”์ฒญ์˜ ์„ฑ๊ณต์ ์ธ ์™„๋ฃŒ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด 200 (OK) ๋˜๋Š” 204 (No Content) ์‘๋‹ต์„ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.(MUST)

  • ์›์„œ๋ฒ„๋Š” PUT ์š”์ฒญ์œผ๋กœ ์ธ์‹๋˜์ง€ ์•Š๋Š” ์ˆ˜์‹ ๋œ ํ—ค๋” ํ•„๋“œ๋ฅผ ๋ฌด์‹œํ•ด์•ผ ํ•œ๋‹ค.(SHOULD) (i.e., ๊ทธ๊ฒƒ๋“ค์„ ๋ฆฌ์†Œ์Šค ์ƒํƒœ์˜ ์ผ๋ถ€๋กœ ์ €์žฅํ•˜์ง€ ๋งˆ๋ผ).

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค ์ธํ„ฐํŽ˜์ด์Šค ๋’ค์— ์žˆ๋Š” ๋ชจ๋“  ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ์€ ์„œ๋ฒ„์— ์˜ํ•ด ์˜๋„์ ์œผ๋กœ ์ˆจ๊ฒจ์ง„๋‹ค.

  • ์›์„œ๋ฒ„๋Š” ์š”์ฒญ์˜ ํ‘œํ˜„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณธ๋ฌธ์— ์ ์šฉ๋œ ๋ณ€ํ™˜ ์—†์ด ์ €์žฅ๋˜๊ณ (i.e., ๋ฆฌ์†Œ์Šค์˜ ์ƒˆ๋กœ์šด ํ‘œ ํ˜„ ๋ฐ์ดํ„ฐ๊ฐ€ PUT ์š”์ฒญ์—์„œ ์ˆ˜์‹ ๋œ ํ‘œํ˜„ ๋ฐ์ดํ„ฐ์™€ ๋™์ผํ•œ ๊ฒฝ์šฐ) ๊ฒ€์ฆ์ž ํ•„๋“œ ๊ฐ’์ด ์ƒˆ๋กœ์šด ํ‘œํ˜„ ์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š๋Š” ํ•œ, PUT์— ๋Œ€ํ•œ ์„ฑ๊ณต์ ์ธ ์‘๋‹ต์œผ๋กœ ETag ๋˜๋Š” Last-Modified ํ•„๋“œ ๊ฐ™์€ ๊ฒ€ ์ฆ์ž ํ—ค๋” ํ•„๋“œ(Section 7.2)๋ฅผ ์ „์†กํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.(MUST NOT)

์ด ์š”๊ตฌ์‚ฌํ•ญ์€ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ PUT์˜ ๊ฒฐ๊ณผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํ‘œํ˜„ ๋ณธ๋ฌธ์ด ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋Š” ์‹œ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ ํ•˜๋ฉฐ, ๋”ฐ๋ผ์„œ ์›์„œ๋ฒ„์—์„œ ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์‘๋‹ต์— ์ˆ˜์‹ ๋œ ์ƒˆ ๊ฒ€์ฆ์ž๋ฅผ ์šฐ๋ฐœ์ ์ธ ๋ฎ์–ด์“ฐ๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ–ฅํ›„ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค(Section 5.2).

POST ๋ฉ”์„œ๋“œ์™€ PUT ๋ฉ”์„œ๋“œ์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๋Š” ๋™๋ด‰๋œ ํ‘œํ˜„์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์˜๋„์— ์˜ํ•ด ๊ฐ•์กฐ๋œ๋‹ค. POST ์š”์ฒญ์˜ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๋Š” ๋ฆฌ์†Œ์Šค ์ž์ฒด์˜ ์˜๋ฏธ์— ๋”ฐ๋ผ ๋™๋ด‰๋œ ํ‘œํ˜„์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ, PUT ์š”์ฒญ์˜ ๋™๋ด‰๋œ ํ‘œํ˜„์€ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์˜ ์ƒํƒœ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ •์˜๋œ๋‹ค. ๋”ฐ๋ผ์„œ PUT์˜ ์˜๋„๋Š” ๋ฉฑ๋“ฑํ•˜๋ฉฐ, ์ •ํ™•ํ•œ ํšจ๊ณผ๋Š” ์›์„œ๋ฒ„์— ์˜ํ•ด์„œ๋งŒ ์•Œ๋ ค์ ธ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ค‘๊ฐœ์—๊ฒŒ ๋ณด์—ฌ์ง„๋‹ค.

PUT ์š”์ฒญ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ํ•ด์„์€ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ ์›ํ•˜๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

  • ํŠน์ • ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— PUT๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์›์„œ๋ฒ„๋Š”, PUT์ด ์ „์ฒด ํ‘œํ˜„์œผ๋กœ์„œ ์ž˜๋ชป ํ‘œํ˜„๋œ ๋ถ€๋ถ„ ์ฝ˜ํ…์ธ ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ Content-Range ํ—ค๋” ํ•„๋“œ([RFC7233] Section 4.2)๋ฅผ ํฌํ•จํ•˜๋Š” PUT ์š”์ฒญ์— 400 (Bad Request) ์‘๋‹ต์„ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.(MUST)

PUT ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์‘๋‹ต์€ ์บ์‹œํ•  ์ˆ˜ ์—†๋‹ค.

4.3.5 DELETE

DELETE ๋ฉ”์„œ๋“œ๋Š” ์›์„œ๋ฒ„๊ฐ€ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์™€ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์˜ ํ˜„์žฌ์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋ฅผ ์ œ๊ฑฐํ•˜๋„๋ก ์š”์ฒญํ•œ๋‹ค. ์‚ฌ์‹ค์ƒ, ์ด ๋ฉ”์„œ๋“œ๋Š” UNIX์˜ rm ๋ช…๋ น๊ณผ ์œ ์‚ฌํ•˜๋‹ค: ์ด๊ฒƒ์€ ์ด์ „์— ์—ฐ๊ด€๋œ ์ •๋ณด๊ฐ€ ์‚ญ์ œ๋  ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€๋ณด๋‹ค๋Š” ์›์„œ๋ฒ„์˜ URI ๋งคํ•‘์— ๋Œ€ํ•œ ์‚ญ์ œ ์ž‘์—…์„ ํ‘œํ˜„ํ•œ๋‹ค.

DELETE ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์‘๋‹ต์€ ์บ์‹œํ•  ์ˆ˜ ์—†๋‹ค.

4.3.6 CONNECT

CONNECT ๋ฉ”์„œ๋“œ๋Š” ์ˆ˜์‹ ์ž์—๊ฒŒ ์š”์ฒญ ๋Œ€์ƒ์œผ๋กœ ์‹๋ณ„๋œ ๋Œ€์ƒ ์›์„œ๋ฒ„์— ํ„ฐ๋„์„ ์„ค์ •ํ•˜๋„๋ก ์š”์ฒญํ•˜๊ณ , ๊ทธ ํ›„, ํ„ฐ๋„์ด ๋‹ซํž ๋•Œ๊นŒ์ง€ ํŒจํ‚ท์˜ ๋ธ”๋ผ์ธ๋“œ ํฌ์›Œ๋”ฉ์œผ๋กœ ๋™์ž‘์„ ์ œํ•œํ•œ๋‹ค. ํ„ฐ๋„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋ฝ์‹œ๋ฅผ ํ†ตํ•ด end-to-end ๊ฐ€์ƒ ์ปค๋„ฅ์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ดํ›„ TLS(Transport Layer Security, [RFC5246])๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

CONNECT๋Š” ํ”„๋ฝ์‹œ์— ๋Œ€ํ•œ ์š”์ฒญ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

CONNECT ์š”์ฒญ์„ ์ „์†กํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ ๋Œ€์ƒ์˜ ๊ถŒํ•œ ์–‘์‹์„ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค ([RFC7230]์˜ Section 5.3). ์ฆ‰, ์š”์ฒญ ๋Œ€์ƒ์€ ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„๋œ ํ„ฐ๋„ ๋Œ€์ƒ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ ํฌํŠธ ๋ฒˆํ˜ธ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด

CONNECT server.example.com:80 HTTP/1.1 Host: server.example.com:80

  • ํ„ฐ๋„ ์ค‘๊ฐœ์ž๋Š” ์–ด๋А ํ•œ์ชฝ์ด ์ปค๋„ฅ์…˜์„ ๋‹ซ์•˜์Œ์„ ๊ฐ์ง€ํ•  ๋•Œ ํ„ฐ๋„์ด ๋‹ซํžŒ๋‹ค: ์ค‘๊ฐœ์ž๋Š” ๋‹ซํžŒ ์ชฝ์— ์„œ ์˜จ ๋ฏธ๊ฒฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ์ชฝ์œผ๋กœ ๋ณด๋‚ด๊ณ , ์–‘์ชฝ ์ปค๋„ฅ์…˜์„ ๋ชจ๋‘ ๋‹ซ์€ ๋‹ค์Œ, ์ „๋‹ฌ๋˜์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ํ๊ธฐํ•ด์•ผ ํ•œ๋‹ค.(MUST)

ํ”„๋ก์‹œ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ„ฐ๋„ ์ƒ์„ฑ ๊ถŒํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด

CONNECT server.example.com:80 HTTP/1.1 Host: server.example.com:80 Proxy-Authorization: basic aGVsbG86d29ybGQ=

  • ์„œ๋ฒ„๋Š” 2xx (Successful) ์‘๋‹ต์œผ๋กœ CONNECT์— Transfer-Encoding ๋˜๋Š” Content-Length ํ—ค๋” ํ•„๋“œ๋ฅผ ์ „์†กํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.(MUST NOT)

  • ํด๋ผ์ด์–ธํŠธ๋Š” CONNECT์— ๋Œ€ํ•œ ์„ฑ๊ณต์ ์ธ ์‘๋‹ต์œผ๋กœ ์ˆ˜์‹ ๋œ Content-Length ๋˜๋Š” Transfer-Encoding ํ—ค๋” ํ•„๋“œ๋ฅผ ๋ฌด์‹œํ•ด์•ผ ํ•œ๋‹ค.(MUST)

CONNECT ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์‘๋‹ต์€ ์บ์‹œํ•  ์ˆ˜ ์—†๋‹ค.

4.3.7 OPTIONS

OPTION ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ์˜ต์…˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„ ๋˜๋Š” ์ค‘๊ฐœ์ž์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ์†Œ์Šค ์ž‘์—…์„ ์•”์‹œํ•˜์ง€ ์•Š๊ณ  ๋ฆฌ์†Œ์Šค ๋˜๋Š” ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ์˜ต์…˜ ๋˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณ„ํ‘œ("*")๋ฅผ ์š”์ฒญ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” OPTIONS ์š”์ฒญ([RFC7230]์˜ Section 5.3)์€ ํŠน์ • ๋ฆฌ์†Œ์Šค๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„์— ์ ์šฉ๋œ๋‹ค. "*" ์š”์ฒญ์€ "ping" ๋˜๋Š” "no-op" ์œ ํ˜•์˜ ๋ฉ”์†Œ๋“œ๋งŒ ์œ ํšจํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HTTP/1.1 ์ ํ•ฉ์„ฑ(๋˜๋Š” ๊ทธ๊ฒƒ๋“ค์˜ ๊ฒฐ์—ฌ)์— ๋Œ€ํ•œ ํ”„๋ก์‹œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์š”์ฒญ ๋Œ€์ƒ์ด ๋ณ„ํ‘œ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ OPTION ์š”์ฒญ์€ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค์™€ ํ†ต์‹ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์— ์ ์šฉ๋œ๋‹ค.

  • ์‘๋‹ต์—์„œ ํŽ˜์ด๋กœ๋“œ ๋ณธ๋ฌธ์„ ์ „์†กํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์„œ๋ฒ„๋Š” โ€œ0โ€์˜ ๊ฐ’์„ ๊ฐ€์ง„ Content-Length ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.(MUST)

  • ์š”์ฒญ์ด Max-Forwards ํ•„๋“œ์™€ ์ˆ˜์‹ ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ”„๋ก์‹œ๋Š” ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๋Š” ๋™์•ˆ Max-Forwards ํ—ค๋” ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.(MUST NOT)

  • ํŽ˜์ด๋กœ๋“œ ๋ณธ๋ฌธ์„ ํฌํ•จํ•˜๋Š” OPTIONS ์š”์ฒญ์„ ์ƒ์„ฑํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฏธ๋””์–ด ํƒ€์ž… ํ‘œํ˜„์„ ์„ค๋ช…ํ•˜๋Š” ์œ ํšจํ•œ Content-Type ํ—ค๋” ํ•„๋“œ๋ฅผ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.(MUST)

OPTIONS ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์‘๋‹ต์€ ์บ์‹œํ•  ์ˆ˜ ์—†๋‹ค.

4.3.8 TRACE

TRACE ๋ฉ”์„œ๋“œ๋Š” ์š”์ฒญ ๋ฉ”์‹œ์ง€์˜ ์›๊ฒฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜-๋ ˆ๋ฒจ ๋ฃจํ”„๋ฐฑ์„ ์š”์ฒญํ•œ๋‹ค.

์š”์ฒญ์˜ ์ตœ์ข… ์ˆ˜์‹ ์ž๋Š” ์•„๋ž˜์— ์„ค๋ช…๋œ ์ผ๋ถ€ ํ•„๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ˆ˜์‹ ๋œ ๋ฉ”์‹œ์ง€๋ฅผ โ€œmessage/httpโ€์˜ ๋‚ด์šฉ ์œ ํ˜•์œผ ๋กœ 200 (OK) ์‘๋‹ต์˜ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ๋‹ค์‹œ ๋ฐ˜์˜ํ•ด์•ผ ํ•œ๋‹ค.(SHOULD)

  • ํด๋ผ์ด์–ธํŠธ๋Š” TRACE ์š”์ฒญ์—์„œ ์‘๋‹ต์— ์˜ํ•ด ๊ณต๊ฐœ๋  ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ํ—ค๋” ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.(MUST NOT)

  • ํด๋ผ์ด์–ธํŠธ๋Š” TRACE ์š”์ฒญ์œผ๋กœ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์„ ๋ณด๋‚ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.(MUST NOT)

TRACE ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์‘๋‹ต์€ ์บ์‹œํ•  ์ˆ˜ ์—†๋‹ค.

Last updated

Was this helpful?