Network

HTTP ์ƒํƒœ์ฝ”๋“œ ์ •๋ฆฌ

DAHLIA CHOI 2021. 7. 23. 15:54

HTTP์˜ ์‘๋‹ต ์ฝ”๋“œ๋Š” 5๊ฐœ์˜ ํด๋ž˜์Šค(๋ถ„๋ฅ˜)๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋กœ ์‘๋‹ต ํด๋ž˜์Šค๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

  • 1xx (์ •๋ณด, Information) : ์š”์ฒญ์„ ๋ฐ›๊ณ , ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ„์†ํ•œ๋‹ค.
  • 2xx (์„ฑ๊ณต, Successful) : ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ›๊ณ , ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.
  • 3xx (๋ฆฌ๋‹ค์ด๋ ‰์…˜, Redirection) : ์š”์ฒญ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์ž‘์—… ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • 4xx (ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜, Client Error) : ์š”์ฒญ์˜ ์ž˜๋ชป๋œ ๋ฌธ๋ฒ• ๋“ฑ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
  • 5xx (์„œ๋ฒ„ ์˜ค๋ฅ˜, Server Error) : ์„œ๋ฒ„๊ฐ€ ์ •์ƒ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

 

[ 1xx (์กฐ๊ฑด๋ถ€ ์‘๋‹ต) ]

์š”์ฒญ์„ ๋ฐ›์•˜์œผ๋ฉฐ ์ž‘์—…์„ ๊ณ„์†ํ•œ๋‹ค.

  • ์‹ค๋ฌด์—์„œ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

[ 2xx (์„ฑ๊ณต) ]

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ๋™์ž‘์„ ์ˆ˜์‹ ํ•˜์—ฌ ์ดํ•ดํ–ˆ๊ณ , ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๊ฒƒ์ด๋‹ค.

 

  • 200 OK : ์š”์ฒญ ์„ฑ๊ณต

 

200 OK

  • 201 Created : ์„ฑ๊ณต์ ์œผ๋กœ ์š”์ฒญ๋˜์—ˆ๊ณ , ์„œ๋ฒ„๊ฐ€ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

 

POST(ํฌ์ŠคํŠธ) ์š”์ฒญ์ด ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ์— ์„œ๋ฒ„์—์„œ Location์„ ๋งŒ๋“ ๋‹ค.

 

  • 202 Accepted : ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ ‘์ˆ˜ํ–ˆ์ง€๋งŒ, ์•„์ง ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•˜๋‹ค.
๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ๊ฐ™์€ ๊ณณ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

  • 204 No Content : ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ, ์‘๋‹ต ํŽ˜์ด๋กœ๋“œ ๋ณธ๋ฌธ์— ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค.
์ค‘๊ฐ„์ค‘๊ฐ„ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
๊ฒฐ๊ณผ ๋‚ด์šฉ์ด ์—†์ง€๋งŒ 204 ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜๋ฉด ์ €์žฅ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

[ 3xx (๋ฆฌ๋‹ค์ด๋ ‰์…˜) ]

์š”์ฒญ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์œ ์ € ์—์–ด์ „ํŠธ์˜ ์ถ”๊ฐ€์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

 

โž• ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ : ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” 3xx์‘๋‹ต์˜ ๊ฒฐ๊ณผ์— Locationํ—ค๋”๊ฐ€ ์žˆ์œผ๋ฉด, Location ์œ„์น˜๋กœ ์ž๋™ ์ด๋™ํ•œ๋‹ค.

 

๐Ÿ“ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์ข…๋ฅ˜

  • ์˜๊ตฌ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ : ํŠน์ • ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ด๋™
  • ์ผ์‹œ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ : ์ผ์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ
์ฃผ๋ฌธ ์™„๋ฃŒ ํ›„ ์ฃผ๋ฌธ ๋‚ด์—ญ ํ™”๋ฉด์œผ๋กœ ์ด๋™
PRG (Post / Redirect / Get) 
  • ํŠน์ˆ˜ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ : ex ) ๊ฒฐ๊ณผ ๋Œ€์‹  ์บ์‹œ๋ฅผ ์‚ฌ์šฉ

 

๐Ÿ’š ์˜๊ตฌ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ (301, 308 ์กด์žฌ) ๐Ÿ’š

  • ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ด๋™
  • ์›๋ž˜์˜ URL์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฒ€์ƒ‰ ์—”์ง„์—์„œ๋„ ๋ณ€๊ฒฝ์„ ์ธ์ง€ํ•œ๋‹ค.
  • 301 Moved Permanently

๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ GET์œผ๋กœ ๋ณ€ํ•˜๊ณ , ๋ณธ๋ฌธ์ด ์ œ๊ฑฐ ๋  ์ˆ˜๋„ ์žˆ๋‹ค.
  • 308 Permanent Redirect

์‹ค์งˆ์ ์œผ๋กœ ์ž˜ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.
301๊ณผ ๊ธฐ๋Šฅ์ด ๊ฐ™๋‹ค.
๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ์™€ ๋ณธ๋ฌธ ์œ ์ง€ (์ฒ˜์Œ POST๋ฅผ ๋ณด๋‚ด๋ฉด ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋„ POST๋ฅผ ์œ ์ง€ํ•œ๋‹ค.)

 

๐Ÿ’š ์ผ์‹œ์ ์ธ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ (302, 307, 303 ์กด์žฌ) ๐Ÿ’š

  • ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.
  • ๊ฒ€์ƒ‰ ์—”์ง„ ๋“ฑ์—์„œ URL์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • 302 Found
๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ GET์œผ๋กœ ๋ณ€ํ•˜๊ณ , ๋ณธ๋ฌธ์ด ์ œ๊ฑฐ๋  ์ˆ˜๋„ ์žˆ๋‹ค. 
๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ GET์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.
๋ช…ํ™•ํ•˜์ง€๋Š” ์•Š์€ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ์‹ค๋ฌด์—์„œ๋Š” ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. 
์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์‹œ์— GET์œผ๋กœ ๋ณ€ํ•ด๋„ ๋˜๋ฉด ๊ทธ๋ƒฅ 302๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๋‹ค.
  • 307 Temporary Redirect
302์™€ ๊ธฐ๋Šฅ์ด ๊ฐ™๋‹ค.
๋ฆฌ๋‹ค์ด๋ ˆํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ์™€ ๋ณธ๋ฌธ ์œ ์ง€ (์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ๋œ๋‹ค.)
  • 303 See Other
302์™€ ๊ธฐ๋Šฅ์ด ๊ฐ™๋‹ค.
๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ GET์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.

 

โœ PRG (Post/Redirect/Get)

  • POST๋กœ ์ฃผ๋ฌธ ํ›„์— ์ƒˆ๋กœ ๊ณ ์นจ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ค‘๋ณต ์ฃผ๋ฌธ์ด ๋˜๋Š”๋ฐ, ์ด๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • POST๋กœ ์ฃผ๋ฌธ ํ›„์— ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ™”๋ฉด์„ GET ๋ฉ”์„œ๋“œ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•œ๋‹ค.
  • ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ๊ฒฐ๊ณผํ™”๋ฉด์„ GET์œผ๋กœ ์กฐํšŒํ•œ๋‹ค.
  • ์ƒˆ๋กœ๊ณ ์นจ ํ•  ๊ฒฝ์šฐ์— ์ค‘๋ณต ์ฃผ๋ฌธ ๋Œ€์‹ ์— ๊ฒฐ๊ณผ ํ™”๋ฉด๋งŒ GET์œผ๋กœ ๋‹ค์‹œ ์š”์ฒญ (GET์€ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ)

 

 

โŒ PRG ์‚ฌ์šฉ ์ „

์ด๋ ‡๊ฒŒ PRG๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ๊ณ ์นจํ–ˆ์„ ๋•Œ, POST๋กœ ๊ฐ™์€ ์š”์ฒญ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต ์ฃผ๋ฌธ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

 

 

โญ• PRG์‚ฌ์šฉ ํ–ˆ์„ ๋•Œ

PRG๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ƒˆ๋กœ๊ณ ์นจ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๋„ GET์œผ๋กœ ๊ฒฐ๊ณผํ™”๋ฉด๋งŒ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต ์ฃผ๋ฌธ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๐Ÿ’š ๊ธฐํƒ€ ๋ฆฌ๋‹ค์ด๋ ‰์…˜(300, 304 ์กด์žฌ) ๐Ÿ’š

300 Multiple Choices ๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

304 Not Modified 

  • ์บ์‹œ๋ฅผ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ
  • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Œ์„ ์•Œ๋ ค์ค€๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋กœ์ปฌ PC์— ์ €์žฅ๋œ ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค.
  • 304์‘๋‹ต์€ ์‘๋‹ต์— ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํฌํ•จํ•˜๋ฉด ์•ˆ๋œ๋‹ค. (๋กœ์ปฌ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—)
  • ์กฐ๊ฑด๋ถ€ GET, HEAD ์š”์ฒญ์‹œ ์‚ฌ์šฉ

 

[ 4xx ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜ ]

  • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ์ž˜๋ชป๋œ ๋ฌธ๋ฒ•์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.
  • ์˜ค๋ฅ˜์˜ ์›์ธ์ด ํด๋ผ์ด์–ธํŠธ์— ์žˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ์š”์ฒญํ•ด๋„ ์‹คํŒจํ•œ๋‹ค. ( 5xx์˜ค๋ฅ˜์™€ ๊ฐ€์žฅ ๋‹ค๋ฅธ ์ . 5xx์˜ค๋ฅ˜๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณต๊ตฌ๋˜๋ฉด ์„ฑ๊ณตํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.)

 

๐Ÿ’™ 400 Bad Request ๐Ÿ’™

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž˜๋ชป๋œ ์š”์ฒญ์„ ํ•ด์„œ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.

  • ์š”์ฒญ ๊ตฌ๋ฌธ, ๋ฉ”์‹œ์ง€ ์˜ค๋ฅ˜...
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ ๋‚ด์šฉ์„ ๋‹ค์‹œ ๊ฒ€ํ† ํ•˜๊ณ  ๋ณด๋‚ด์•ผํ•œ๋‹ค.
  • ex) ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋งž์ง€ ์•Š์„ ๋•Œ(์˜ˆ๋ฅผ ๋“ค์–ด ์ˆซ์ž๋ฅผ ๋ณด๋‚ด์•ผํ•˜๋Š”๋ฐ ๋ฌธ์ž๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ), API ์ŠคํŽ™์ด ๋งž์ง€ ์•Š์„ ๋•Œ. 

 

๐Ÿ’™ 401 Unauthorized ๐Ÿ’™

์ธ์ฆ๋˜์ง€ ์•Š์Œ(๋กœ๊ทธ์ธ๋˜์ง€ ์•Š์Œ)

 

 

๐Ÿ’™ 403 Forbidden ๐Ÿ’™

์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ดํ•ดํ–ˆ์ง€๋งŒ ์Šน์ธ์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค.

์ธ์ฆ์ž๊ฒฉ์€ ์žˆ์ง€๋งŒ, ์ ‘๊ทผ ๊ถŒํ•œ์ด ๋ถˆ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ. ( ex. ํšŒ์›์ด ๊ด€๋ฆฌ์ž์˜ ๊ธ€์— ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์—†๋‹ค)

 

 

๐Ÿ’™ 404 Not Found ๐Ÿ’™

์š”์ฒญ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์— ์—†๋Š” ๊ฒฝ์šฐ๋‚˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ถŒํ•œ์ด ๋ถ€์กฑํ•œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๋•Œ, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆจ๊ธฐ๊ณ  ์‹ถ์„ ๋•Œ

 

 

[ 5xx ์„œ๋ฒ„ ์˜ค๋ฅ˜ ]

  • ์„œ๋ฒ„ ๋ฌธ์ œ๋กœ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ๋ณต๊ตฌ๋์„ ๋•Œ ์žฌ์‹œ๋„ํ•˜๋ฉด ์„ฑ๊ณตํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์›ฌ๋งŒ์—์„œ๋Š” 5xx์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ์•ˆ๋œ๋‹ค.

 

๐Ÿ’œ 500 Internal Server Error ๐Ÿ’œ

  • ์„œ๋ฒ„ ๋‚ด๋ถ€ ๋ฌธ์ œ๋กœ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • ์• ๋งคํ•˜๋ฉด 500์˜ค๋ฅ˜์ด๋‹ค.

 

๐Ÿ’œ 503 Service Unavailable ๐Ÿ’œ

  • ์„œ๋ฒ„๊ฐ€ ์ผ์‹œ์ ์ธ ๊ณผ๋ถ€ํ•˜ ๋˜๋Š” ์˜ˆ์ •๋œ ์ž‘์—…์œผ๋กœ ์ž ์‹œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.
  • Retry-After ํ—ค๋” ํ•„๋“œ๋กœ ์–ผ๋งˆ๋’ค ๋ณต๊ตฌ๋˜๋Š”์ง€ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์‹ค๋ฌด์—์„œ ๊ฑฐ์˜ ๋ณด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†๋‹ค.

 


์ถœ์ฒ˜ : HTTP ์ƒํƒœ์ฝ”๋“œ-์œ„ํ‚ค๋ฐฑ๊ณผ

 

์ด ๊ธ€์€ ์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜์˜ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹์„ ๋“ฃ๊ณ  ์ž‘์„ฑ๋œ ๋ณต์Šต ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.