์๋ ํ์ธ์!
์ค๋๋ ๊ณต๋ถํ๊ณ ์์ด์ฉ
๋ฒ์จ ์น์ 6 ๊น์ง ์๋ค์!!!!
์์์์ ํ์ดํ !!!
๊ทธ๋ผ ๊ณ ๊ณ !!

1. ์ํ ์ฝ๋
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ต์์ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ
- 1xx: ์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ ์ค (๊ฑฐ์ ์ฌ์ฉX)
- 2xx: ์์ฒญ ์ ์ ์ฒ๋ฆฌ
- 3xx: ์์ฒญ์ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ ํ๋์ด ํ์ (๋ฆฌ๋ค์ด๋ ํธ)
- 4xx: ํด๋ผ์ด์ธํธ ์ค๋ฅ, ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
- 5xx: ์๋ฒ ์ค๋ฅ, ์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํจ
2. ๋ง์ฝ์ ๋ชจ๋ฅด๋ ์ํ ์ฝ๋๊ฐ ๋ํ๋๋ฉด?
๋ชจ๋ฅด๋ ์ํ ์ฝ๋๊ฐ ๋ํ๋๋ ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, 299๋ผ๋ ์ํ ์ฝ๋๋ก ์๋ต์ ๋ฐ์์ต๋๋ค.
๊ทผ๋ฐ ์ฐ๋ฆฐ ์ด๊ฑธ ๋ชจ๋ฅด์ฃ ? ๊ทผ๋ฐ 200๋ฒ๋๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ์ฑ๊ณตํ๋ค๋ผ๋ ๊ฒ์ ์๋๋ค.
๋ฐ๋ผ์, ์ฐ๋ฆฐ ๊ทธ๋ฅ "์~ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ์ฑ๊ณตํ๊ตฌ๋~" ๋ผ๊ณ ํ์ ํ๋ฉด ๋ฉ๋๋ค.
3. ์ํ ์ฝ๋ 1xx (Informational)
์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ ์ค
์ํ ์ฝ๋ 100๋ฒ๋๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
4. ์ํ ์ฝ๋ 2xx (Successful, ์ฑ๊ณต)
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌ
์ํ ์ฝ๋ 200๋ฒ๋๋ ์ด 4๊ฐ๊ฐ ์์ต๋๋ค.
- 200: OK
- 201: Created (POST ๋ฑ๋ก)
- 202: Accepted
- 204: No Content
์ฌ์ค์ ์ฑ๊ณต์ ๊ฑฐ์ 200์ ์ฌ์ฉํ๊ณ ๊ฐ๋ 201์ ์ฌ์ฉํ๋ ์ ๋์ ๋๋ค.
์์ธํ ์ค๋ช ์ ๋ฐ์์ ๊ทธ๋ฆผ๊ณผ ํจ๊ป ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
4-1. 200 OK
์์ฒญ ์ฑ๊ณต
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒํํ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ถ๋ ฅํ์ฌ ์๋ต์ ํฉ๋๋ค.
์ถ๋ ฅ์ ์ฑ๊ณตํ๋ฉด ๊ฐ์ฅ ๋ง์ด ๋ณด๋ ์ผ์ด์ค ์ ๋๋ค.
4-2. 201 Created
์์ฒญ ์ฑ๊ณตํด์ ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋จ
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒํํ ๋ฆฌ์์ค๋ฅผ POST ๋ฑ๋กํด๋ฌ๋ผ๊ณ ๋ณด๋ ๋๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๊ฒ์ ๋ณด๊ณ ์ ์์ฒญ ์ฑ๊ณตํด์ ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋์๋ค๋ ๋ป์ธ 201 ์ํ ์ฝ๋๋ฅผ ๋ณด๋ ๋๋ค.
ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ 201 ์ํ ์ฝ๋๋ฅผ ๋ฐ๊ณ , "์~ 200 ์๋ฆฌ์ฆ๋๊น ์์ฒญ ์ฑ๊ณตํ๊ตฌ๋!"๋ผ๊ณ ์ธ์์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , 201์ด๋๊น ๋ฆฌ์์ค๊ฐ ์์ฑ์ด ๋์๊ณ , Location ํค๋๊ฐ ์์ ์ ์๋ค๊ณ ํ๋จํฉ๋๋ค.

4-3. 202 Accepted
์์ฒญ์ด ์ ์๋์์ผ๋ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์์์
๋ฐฐ์น ์ฒ๋ฆฌ ๊ฐ์ ๊ณณ์์ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์์ฒญ ์ ์ ํ 1์๊ฐ ๋ค์ ๋ฐฐ์น ํ๋ก์ธ์ค๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ด๋ฌ๋ฉด ์ ์๋ง ๋๊ฑฐ๊ณ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์์ ์ผ์ด์ค ์ ๋๋ค.
์ด์ฐ๋์๋ ์์ฒญ์ ๋์๊ธฐ ๋๋ฌธ์ ์ฑ๊ณต์ผ๋ก ๋ค์ด๊ฐ์ 200๋ฒ๋ ์ํ ์ฝ๋ ์ ๋๋ค.
์ ์ฌ์ฉํ์ง๋ ์์ต๋๋ค.
4-4. 204 No Content
์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ์ง๋ง, ์๋ต ํ์ด๋ก๋ ๋ณธ๋ฌธ์ ๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ์์
์๋ฅผ ๋ค์ด, ์น ๋ฌธ์ ํธ์ง๊ธฐ์์ save ๋ฒํผ์ด ์์ต๋๋ค.
save ๋ฒํผ์ ๊ฒฐ๊ณผ๋ก ์๋ฌด ๋ด์ฉ์ด ์์ด๋ ๋๊ณ , save ๋ฒํผ์ ๋๋ฌ๋ ๊ฐ์ ํ๋ฉด์ ์ ์งํด์ผ ํฉ๋๋ค.
์๋ฒ์์๋ ์ ์ฅํ๊ณ ๋์ ๋ณด๋ผ ๊ฒ์ด ์์ฃ ?
๊ฒฐ๊ณผ ๋ด์ฉ์ ์์ง๋ง 204 ๋ฉ์์ง ๋ง์ผ๋ก ์ฑ๊ณต์ ์ธ์ํ ์ ์์ต๋๋ค.

5. ์ํ ์ฝ๋ 3xx (Redirection, ๋ฆฌ๋ค์ด๋ ์ )
์์ฒญ์ ์๋ฃํ๊ธฐ ์ํด ์ ์ ์์ด์ ํธ์ ์ถ๊ฐ ์กฐ์น ํ์
์ฌ๊ธฐ ์ค๋ช ์ ๋์์๋ ์ ์ ์์ด์ ํธ๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ๋ปํฉ๋๋ค. ์ฆ, ์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ปํฉ๋๋ค.
์ข ๋ฅ๋ ์ด 7๊ฐ์ง๊ฐ ์์ต๋๋ค.
- 300: Multiple Choices
- 301: Moved Permanently
- 302: Found
- 303: See Other
- 304: Not Modified
- 307: Temporary Redirect
- 308: Permanent Redirect
์ฌ๊ธฐ์์ 300๋ฒ์ ๊ฑฐ์ ์ฐ์ง ์์ต๋๋ค.
301๋ฒ๋ถํฐ 308๋ฒ๊น์ง๋ ์ค์ํ๋ฏ๋ก ๋ฐ์์ ์์ธํ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
5-1. ๋ฆฌ๋ค์ด๋ ์ ์ดํด
300๋ฒ๋๋ฅผ ์์ํ๊ธฐ ์ ์ ๋จผ์ ๋ฆฌ๋ค์ด๋ ์ ์ด๋ ๋ฆฌ๋ค์ด๋ ํธ์ ๋ป์ ์๊ณ ๊ฐ์ผ ํฉ๋๋ค.
๋ฆฌ๋ค์ด๋ ์
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๊ณ ํ ๊ฒ์ ์๋ฒํํ ์์ฒญํฉ๋๋ค.
์๋ฒ๊ฐ ์์ฒญ์ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ๋ค๊ณ ํด๋ผ์ด์ธํธํํ ๋ค์ ์ ์กํฉ๋๋ค.
์ด ์์ ์ ๋ฆฌ๋ค์ด๋ ์ ์ด๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์น ๋ธ๋ผ์ฐ์ ๋ 3xx ์๋ต์ ๊ฒฐ๊ณผ์ Location ํค๋๊ฐ ์์ผ๋ฉด, Location ์์น๋ก ์๋ ์ด๋์ ํฉ๋๋ค.
์ด๊ฒ์ ๋ฆฌ๋ค์ด๋ ํธ๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋ผ ์๋ ์ด๋์ ํ๋ค๋ ๊ฒ ๋ญ๊น์?
์๊ฑด ์๋ ๋ฆฌ๋ค์ด๋ ํธ ํ๋ฆ์ ์์์ผ ํฉ๋๋ค.
๋จผ์ , ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ ์ฐ๋ ์ด๋ฒคํธ ํ์ด์ง /event๋ฅผ GET ๋ฉ์๋๋ก ์์ฒญํฉ๋๋ค.
ํ์ง๋ง, ์ฐ๋ฆฌ๋ ํ์ด์ง๊ฐ ๋ฐ๋์ด์ ์ด์ /new-event๋ผ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋์, ์๋ฒ ์ ์ฅ์์๋ "/event ๋ ์ด์ ์ ์ฐ๋๋ฐ..? ์ด์ ๊ฒฝ๋ก /new-event๋ฅผ ์จ." ๋ผ๊ณ ํด๋ผ์ด์ธํธํํ ์๋ต์ ๋ณด๋ ๋๋ค.
๊ทธ๋ฌ๋ฉด, ์๋ ๋ฆฌ๋ค์ด๋ ํธ๊ฐ ๋์ด์ ํด๋ผ์ด์ธํธ๋ ์๋ก์ด ๊ฒฝ๋ก๋ก ๋ค์ ์๋ฒํํ GET ๋ฉ์๋๋ก ์์ฒญํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์๋ฒ๋ ์์ฒญ ์ฑ๊ณตํ๋ค๊ณ 200 OK๋ฅผ ํด๋ผ์ด์ธํธํํ ์๋ต์ ๋ณด๋ ๋๋ค.
๊ทธ๋ฌ๊ณ ๋์ ์ฌ์ฉ์๋ ์ ์ด๋ฒคํธ ํ์ด์ง๋ก ๋ค์ด๊ฐ๋ ๊ฑฐ์ฃ .
๋ฆฌ๋ค์ด๋ ์ ์ ์ด 3๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
- ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
: ํน์ ๋ฆฌ์์ค์ URI๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋
- ์์ ํ ๊ฒฝ๋ก๊ฐ ๋ฐ๋์ด์ ์๋ ๊ฒฝ๋ก๋ฅผ ๋ ์ด์ ์ฐ๋ฉด ์ ๋ฉ๋๋ค.
- ex) /members -> /users
- ex) /event -> /new-event
- ์ผ์ ๋ฆฌ๋ค์ด๋ ์
: ์ผ์์ ์ธ ๋ณ๊ฒฝ
- ex) ์ฃผ๋ฌธ ์๋ฃ ํ ์ฃผ๋ฌธ ๋ด์ญ ํ๋ฉด์ผ๋ก ์ด๋
- PRG: ์์ฃผ ์ฐ๋ ํจํด์ผ๋ก, Post/Redirect/Get์ ๋ปํจ. ๋ฐ์์ ๋ ์ค๋ช ํ ์์ .
- ํน์ ๋ฆฌ๋ค์ด๋ ์ : ๊ฒฐ๊ณผ ๋์ ์บ์๋ฅผ ์ฌ์ฉ
๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ฐ์์ ์์ธํ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
5-2. ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
301, 308
- ๋ฆฌ์์ค์ URI๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ์๋์ URL๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋๊ณ , ๊ฒ์ ์์ง ๋ฑ์์๋ ๋ณ๊ฒฝ์ ์ธ์งํด์ผ ํฉ๋๋ค.
- ๋ง์ฝ์ ๊ฒฝ๋ก๊ฐ /event์์ /new-event๋ก ๋ฐ๋๋ฉด ๊ฒ์์์ง์์๋ ๋ฐ๋ ๊ฒ์ ์๊ณ /new-event๋ฅผ ์จ์ผํฉ๋๋ค.
- 301 Moved Permanently
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณํ๊ณ , ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์์ต๋๋ค.
- POST๋ก ์์ฒญ์ ํด๋ GET์ผ๋ก ๋ณํฉ๋๋ค.
- 308 Permanent Redirect
- 301๊ณผ ๊ธฐ๋ฅ์ ๊ฐ์ต๋๋ค.
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ์ ์ ์งํด์ผ ํฉ๋๋ค. (์ฒ์ POST๋ฅผ ๋ณด๋ด๋ฉด ๋ฆฌ๋ค์ด๋ ํธ๋ POST ์ ์ง)
- 301๊ณผ 308 ๋ ๋ค ๊ธฐ๋ฅ์ ๊ฒฝ๋ก๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ๋์๋ค๋๊ฑฐ ์๋ ค์ค๋ค๋ ์ !!
5-2(1). ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ - 301
ํด๋ผ์ด์ธํธ์์ ์ด๋ฒคํธ ํ์ด์ง์ ๋ฑ๋ก์ ์ํด์ /event์ POST ๋ฉ์๋๋ก ๋ฉ์์ง๋ฅผ ์ ๋ ฅํด์ ์์ฒญํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋ฒ์์๋ ๊ฒฝ๋ก๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ๋์๋ค๊ณ ํด๋ผ์ด์ธํธํํ 301 ์๋ต ์ฝ๋๋ฅผ ๋ณด๋ ๋๋ค.
ํด๋ผ์ด์ธํธ์์๋ ๊ฒฝ๋ก๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ๋์๋ค๋ ์ฌ์ค์ ํ์ธํ๊ณ ์๋ก์ด ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ ๋ค ์๋ฒํํ GET์ผ๋ก ํ ๋ฒ ๋ ์์ฒญํฉ๋๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธํํ ์ ์ด๋ฒคํธ ํ์ด์ง๋ฅผ ๋ณด๋ ๋๋ค. ์ด ๋, ๊ธฐ์กด์ POST๋ก ๋ณด๋๋ ๋ฉ์์ง๋ ์ฌ๋ผ์ก์ต๋๋ค.
ํด๋ผ์ด์ธํธ๋ "์.. ๋ค์ ๋ฉ์์ง ๋ณด๋ด์ผํ๋ค.." ํ๊ณ ์๋ฒํํ ๋ค์ ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค.
์ด๋ฐ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด 308๋ก ํด๊ฒฐ์ ํ์์ต๋๋ค.
5-2(2). ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ - 308
ํด๋ผ์ด์ธํธ์์ ์๊น์ฒ๋ผ ์ด๋ฒคํธ ํ์ด์ง์ ๋ฑ๋ก์ ์ํด์ /event์ POST ๋ฉ์๋๋ก ๋ฉ์์ง๋ฅผ ์ ๋ ฅํด์ ์์ฒญํฉ๋๋ค.
์ด๋ฒ์๋ ์๋ฒ์์๋ ๊ฒฝ๋ก๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ๋์๋ค๊ณ ํด๋ผ์ด์ธํธํํ 308 ์๋ต ์ฝ๋๋ฅผ ๋ณด๋ ๋๋ค.
ํด๋ผ์ด์ธํธ์์๋ ๊ฒฝ๋ก๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ฐ๋์๋ค๋ ์ฌ์ค์ ํ์ธํ๊ณ ์๋ก์ด ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ ๋ค์ POST ๋ฉ์๋๋ฅผ ์ ์งํด์ ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋ฒ์์๋ ์ด๋ฒคํธ ์ฐธ์ฌ ์๋ฃ๋์๋ค๊ณ ํด๋ผ์ด์ธํธํํ ์ฑ๊ณต ์๋ต์ฝ๋ 200๋ฒ์ ๋ณด๋ ๋๋ค.
์ค๋ฌด์์๋ ํ์ด์ง๊ฐ ๋ฐ๋๋ฉด ์์ ํ ๋ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ 308๋ฒ๋ณด๋ค๋ 301๋ฒ์ ์๋๋ค.
๊ทผ๋ฐ.. ์ฌ์ค ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ ์ ๋ง์ด ์ฐ์ง๋ ์๊ณ ๋ฐ์์ ์ค๋ช ํ ์ผ์์ ์ธ ๋ฆฌ๋ค์ด๋ ์ ์ ๋ง์ด ์๋๋ค.
5-3. ์ผ์์ ์ธ ๋ฆฌ๋ค์ด๋ ์
302, 307, 303
- ๋ฆฌ์์ค์ URI๊ฐ ์ผ์์ ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. (๋์ค์๋ ์ ๋ฐ๋ ์๋..?)
- ๊ฒ์ ์์ง ๋ฑ์์ URL์ ๋ณ๊ฒฝํ๋ฉด ์ ๋ฉ๋๋ค. (์๊ฒ์ด ์๊ตฌ์ ์ธ ๋ฆฌ๋ค์ด๋ ์ ๊ณผ์ ์ฐจ์ด์ )
- 302 Found
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณํ๊ณ , ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์์ต๋๋ค. (301์ด๋ ์ํฉ ๊ฐ์, ๋ช ํํ์ง ์์ GET ๋ณ๊ฒฝ..)
- GET์ผ๋ก ๋ณํ ์ ์๋ค๊ณ ํ๋๋ฐ ์ฌ์ค ๋๋ถ๋ถ ๋ณํ๊ณ ์ ๊ฑฐ๋ฉ๋๋ค.
- 307 Temporary Redirect
- 302์ ๊ธฐ๋ฅ์ ๊ฐ์ต๋๋ค.
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ์ ์ ์งํฉ๋๋ค. (์์ฒญ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ ๋ ์ ๋ผ์!!)
- POST๋ก ๋ณด๋ด๋ฉด POST๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
- 303 See Other
- 302์ ๊ธฐ๋ฅ์ ๊ฐ์ต๋๋ค.
- ๋ฆฌ๋ค์ด๋ ํธ ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. (302๋ณด๋ค ๋ช ํํ GET์ผ๋ก ๋ณ๊ฒฝ)
- ๊ทผ๋ฐ ์๋ ๊ฑ GET์ผ๋ก ๋ณ๊ฒฝํด๋ ๋๋๊ฑฐ๋ฉด 302๋ฅผ ์จ๋ ๋ฉ๋๋ค.
5-3(1). PRG: Post/Redirect/Get (์ผ์์ ์ธ ๋ฆฌ๋ค์ด๋ ์ - ์์)
PRG ์๊ฑธ ๊ณผ์ฐ ์ธ์ ์ธ๊น์?
๋ฐ์์ ์ค๋ช ์ ํด๋ณด๊ฒ ์ต๋๋ค.
<PRG ์ฌ์ฉ ์ >
๋ง์ฝ์ ์ํ์ ์ฃผ๋ฌธํ๋ ค๊ณ ์ฃผ๋ฌธ ํ์ด์ง์ ๋ฉ์์ง๋ฅผ ๋ฑ๋กํ์ต๋๋ค. (POST ๋ฉ์๋ ์ด์ฉ)
๊ทธ๋ฌ๊ณ ์ํ ์ฃผ๋ฌธํ๊ธฐ ๋ฒํผ์ ๋๋ ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด POST๋ก ๋ด ๋ฉ์์ง๊ฐ ๋์ด๊ฐ๋๋ค.
๊ทธ๋ ๊ฒ ์ฃผ๋ฌธ์ด ์๋ฃ๋์ด ๊ฒฐ๊ณผ๊ฐ ๋จ์์๋ ์ํ๊ณ , ์ค์๋ก ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจ ํด๋ฒ๋ ธ์ต๋๋ค.
๊ฒฝ๊ณ ์ฐฝ์ ๋จ์ง๋ง YES๊น์ง ๋๋ฌ๋ฒ๋ฆฌ๋ฉด POST ์ ๋ณด ๋ค์ ๋ค์ด๊ฐ์ ์ค๋ณต ์ฃผ๋ฌธ์ด ๋์ด๋ฒ๋ฆด ์ ์์ต๋๋ค.
<PRG ์ฌ์ฉ ์ ๊ณผ์ >
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒํํ /order ํ์ด์ง์ POST๋ก ๋ฉ์์ง ๋ฑ๋ก์ ์์ฒญํฉ๋๋ค. (์ฃผ๋ฌธ)
์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ์์ ํ์ธํด๋ณด๋ ์ํ ์ฃผ๋ฌธ์ด ๋ค์ด์๋ค์? ํ๊ณ ์ฃผ๋ฌธ ๋ฐ์ดํฐ์ ์ํ์ ์ ์ฅํฉ๋๋ค.
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ 200 OK ์ํ ์ฝ๋์ ํจ๊ป ์ฃผ๋ฌธ ์๋ฃ๊ฐ ๋์๋ค๊ณ ๋ณด๋ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ง๊ธ ํ์ฌ POST ์์ฒญ์ด ๋ง์ง๋ง ์์ฒญ์ด ๋ฉ๋๋ค.
์ ๊ทผ๋ฐ ๋ ์ ์ด๋ฌ์ค๊น์? ์ค์๋ก ์๋ก๊ณ ์นจ ํ์ จ๋ค์..;;
์ด๋ฌ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ POST ๋ง์ง๋ง ์์ฒญ์ ์๋ฒํํ ๋ค์ ๋ณด๋ ๋๋ค.
๊ทธ๋ผ ๋ ์์ ๊ณผ์ ์ ๋ค์ ๋ฐ๋ณตํ๊ฒ ๋ฉ๋๋ค. (์ฃผ๋ฌธ๋ฐ์ดํฐ๊ฐ 1๊ฑด ๋ ๋ค์ด์ค๊ฒ ๋ฉ๋๋ค.)
๊ฒฐ๊ตญ ๋ ์ฃผ๋ฌธ ์๋ฃ.. ์ฌ์ฃผ๋ฌธ์ด ๋์ด๋ฒ๋ ธ์ต๋๋ค~~
<PRG ์ฌ์ฉ ํ - ํด๊ฒฐ>
- POST๋ก ์ฃผ๋ฌธ ํ์ ์๋ก ๊ณ ์นจ์ผ๋ก ์ธํ ์ค๋ณต ์ฃผ๋ฌธ ๋ฐฉ์ง
- POST๋ก ์ฃผ๋ฌธ ํ์ ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ GET ๋ฉ์๋๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์๋ก ๊ณ ์นจํด๋ ๊ฒฐ๊ณผ ํ๋ฉด์ GET์ผ๋ก ์กฐํ
- ์ค๋ณต ์ฃผ๋ฌธ ๋์ ์ ๊ฒฐ๊ณผ ํ๋ฉด๋ง GET์ผ๋ก ๋ค์ ์์ฒญ -> ๊ฒฐ๊ณผ ํ๋ฉด๋ง ๊ณ์ ๋์ด
<PRG ์ฌ์ฉ ํ ๊ณผ์ >
ํด๋ผ์ด์ธํธ๊ฐ /order ํ์ด์ง์ POST ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์๋ฒํํ ์ํ ์ฃผ๋ฌธ ๋ฉ์์ง ๋ฑ๋ก์ ์์ฒญํฉ๋๋ค.
์์ฒญ์ด ๋ค์ด๊ฐ๋ฉด ์๋ฒ๊ฐ DB์ ์ฃผ๋ฌธ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
์๋ฒ๊ฐ ์๋ต์ 200 OK๊ฐ ์๋ 302 Found(303 ๋ณด๋ด๋ ๋จ)๋ฅผ ๋ณด๋ ๋๋ค. ๊ทธ๋ฌ๊ณ Location ์ ๋ณด๋ฅผ ์ค๋๋ค. (ex. 19๋ฒ ์ฃผ๋ฌธ)
ํด๋ผ์ด์ธํธ๊ฐ "์ค! 302๋ฒ ์ํ ์ฝ๋๊ฐ ์๋ค?" ํ๊ณ ์๋ ๋ฆฌ๋ค์ด๋ ํธ ํฉ๋๋ค.
๊ทธ๋ฌ๊ณ ํด๋ผ์ด์ธํธ๊ฐ GET์ผ๋ก ๋ฐ๋๋๋ค.
์๋ฒ๋ 19๋ฒ ์ฃผ๋ฌธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ html ํ๋ฉด(๊ฒฐ๊ณผ ํ๋ฉด)์ ๋ง๋ค๊ณ 200 OK๋ฅผ ๋ณด๋ ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ค์๋ก ์๋ก ๊ณ ์นจํด๋ GET ์์ฒญ(5๋ฒ)์ผ๋ก ๋ค์ ์ด๋์ ํฉ๋๋ค.
ํด๊ฒฐ ์๋ฃ!
<PRG ์ดํ ๋ฆฌ๋ค์ด๋ ํธ>
- URL์ด ์ด๋ฏธ POST -> GET์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ๊ฐ ๋์์ต๋๋ค.
- ์๋ก ๊ณ ์นจํด๋ GET์ผ๋ก ๊ฒฐ๊ณผ ํ๋ฉด๋ง ์กฐํ๊ฐ ๋ฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ฅ๐ง๐ป: ์ฌ์ฉ์ฑ์ด ์ข์์ง๋๋ค. (๊ฒฝ๊ณ ์ฐฝ๋ ์๊ณ ! ์ค์๋ก ์๋ก ๊ณ ์นจํด๋ ๋ฌธ์ ๊ฐ ์๊ณ !)
- ์๋ฒ ์ ์ฅ๐ป: ์ค๋ฅ๊ฐ ์ค์ด์ ์ข์์ง๋๋ค. (๊ฐ์ ์ฃผ๋ฌธ ๋ฒํธ๋ฉด ์ฌ์ฃผ๋ฌธ์ด ๋์ง ์๊ฒ ๋ง์ต๋๋ค.)
5-3(2). ๊ทธ๋์ ๋ญ ์จ์ผ ํ ๊น?
302, 307, 303
- ์ ๋ฆฌ!!
- 302 Found: GET์ผ๋ก ๋ณํ ์ ์์ต๋๋ค. (๊ฑฐ์ GET์ผ๋ก ๋ณํจ)
- 307 Temporary Redirect: ๋ฉ์๋๊ฐ ๋ณํ๋ฉด ์ ๋ฉ๋๋ค.
- 303 See Other: ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณ๊ฒฝ๋์ด์ผ ํฉ๋๋ค.
- ์ญ์ฌ
- ์ฒ์ 302 ์คํ์ ์๋๋ HTTP ๋ฉ์๋๋ฅผ ์ ์งํ๋ ๊ฒ์ด์์ต๋๋ค.
- ๊ทธ๋ฐ๋ฐ ์น ๋ธ๋ผ์ฐ์ ๋ค์ด ๋๋ถ๋ถ GET์ผ๋ก ๋ฐ๊พธ์ด๋ฒ๋ ธ์ต๋๋ค. (์ผ๋ถ๋ ๋ค๋ฅด๊ฒ ๋์)
- ๊ทธ๋์ ๋ชจํธํ 302๋ฅผ ๋์ ํ๋ ๋ช ํํ 307, 303์ด ๋ฑ์ฅํ์ต๋๋ค. (301 ๋์ฉ์ผ๋ก 308๋ ๋ฑ์ฅ)
- ํ์ค
- 307, 303์ ๊ถ์ฅํ์ง๋ง ํ์ค์ ์ผ๋ก ์ด๋ฏธ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด 302๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
- ์๋ ๋ฆฌ๋ค์ด๋ ์ ์์ GET์ผ๋ก ๋ณํด๋ ๊ด์ฐฎ์ ๊ฑฐ๋ฉด ๊ทธ๋ฅ 302๋ฅผ ์ฌ์ฉํด๋ ํฐ ๋ฌธ์ ๋ ์์ต๋๋ค.
5-4. ๊ธฐํ(ํน์) ๋ฆฌ๋ค์ด๋ ์
300, 304
- 300 Multiple Choices: ์ ์๋๋ค.
- 304 Not Modified: ๋ง์ด ์ฐ๋๋ฐ, ๋ ์์ธํ ๋ด์ฉ์ ๋ท ์น์ ์์ ๋ ์ค๋ช ํ ์์ .
304์ ๊ดํด์ ์กฐ๊ธ ๋ ์ค๋ช ์ ํ์๋ฉด...
๊ฒฐ๊ณผ ๋์ ์ ์บ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ํด๋ผ์ด์ธํธํํ ๋ฆฌ์์ค๊ฐ ์์ ๋์ง ์์์์ ์๋ ค์ค๋๋ค.
๋ฐ๋ผ์, ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ PC์ ์ ์ฅ๋ ์บ์๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. (์บ์๋ก ๋ฆฌ๋ค์ด๋ ํธ ํจ)
๋ํ, 304 ์๋ต์ ๋ก์ปฌ ์บ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ์๋ต์ ๋ฉ์์ง ๋ฐ๋๋ฅผ ํฌํจํ๋ฉด ์ ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์กฐ๊ฑด๋ถ GET, HEAD ์์ฒญ ์ ์ฌ์ฉํฉ๋๋ค.
๊ณผ์ ์ ์ค๋ช ํ์๋ฉด, ํด๋ผ์ด์ธํธํํ ์บ์๊ฐ ์๋๋ฐ ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋ ๊ฒ ๊ฐ์์ ์๋ฒํํ ์บ์ ๊ธฐ๊ฐ ๋ง๋ฃ๋ ๊ฑฐ ๋ง๋๊ณ ์์ฑ ์ผ์ ๋ฑ์ ์ ๋ณด๋ฅผ ๋๊ธฐ๊ณ ์ ๋ฌผ์ด๋ด ๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋ฒ๊ฐ ๋ณด๊ณ ์ ํด๋ผ์ด์ธํธํํ ์บ์ ๊ทธ๋ฅ ๊ณ์ ์จ๋ ๋ ๊ฒ ๊ฐ๋ค๊ณ ์บ์ํด์ ๋ค์ ์กฐํํ๋ผ๊ณ ์๋ต์ ๋ณด๋ ๋๋ค.
6. ์ํ ์ฝ๋ 4xx (Client Error, ํด๋ผ์ด์ธํธ ์ค๋ฅ)
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
์ค๋ฅ์ ์์ธ์ด ํด๋ผ์ด์ธํธํํ ์์ต๋๋ค.
๋ํ, ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ ์๋ชป๋ ์์ฒญ, ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๊ฐ์ ์ฌ์๋๋ ์คํจํฉ๋๋ค!!!! ์ค์!!!
500๋ฒ๋์ ์ฐจ์ด์ ์ 400๋ฒ๋๋ ๋๊ฐ์ ์ฌ์๋๊ฐ ์คํจํ์ง๋ง...
500๋ฒ๋ ์ค๋ฅ๋ DB ๋ณต๊ตฌ๋๋ฉด ๋๊ฐ์ ์ฌ์๋๊ฐ ์ฑ๊ณตํ ์๋..?
6-1. 400 Bad Request
ํด๋ผ์ด์ธํธ๊ฐ ์๋ชป๋ ์์ฒญ์ ํด์ ์๋ฒ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์
์์ฒญ ๊ตฌ๋ฌธ, ๋ฉ์์ง ๋ฑ๋ฑ์ ์ค๋ฅ๊ฐ ๋ฌ์ ๋ ๋จ๋ ์ํ ์ฝ๋ ์ ๋๋ค.
ํด๋ผ์ด์ธํธ๋ ์์ฒญ ๋ด์ฉ์ ๋ค์ ๊ฒํ ํ๊ณ ๋ณด๋ด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด, ์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ชป๋์๊ฑฐ๋ API ์คํ์ด ๋ง์ง ์์ ๋..?
๋ ์ฌ์ด ์์๋ฅผ ๋ค์๋ฉด, ์ซ์๋ฅผ ๋ณด๋ด์ผํ๋๋ฐ ๋ฌธ์๋ฅผ ๋ณด๋์ ๋
6-2. 401 Unauthorized
ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ๋ฆฌ์์ค์ ๋ํ ์ธ์ฆ์ด ํ์ํจ
์ธ์ฆ(Authentication)์ด ๋์ง ์์์ ๋ ๋จ๋ ์ํ ์ฝ๋ ์ ๋๋ค.
401 ์ค๋ฅ ๋ฐ์ ์ ์๋ต์ WWW-Authenticate ํค๋์ ํจ๊ป ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
<์ฐธ๊ณ ํด์ผ ํ ์ฉ์ด - ํท๊ฐ๋ฆด ์ ์ด์์>
- ์ธ์ฆ(Authentication): ๋ณธ์ธ์ด ๋๊ตฌ์ธ์ง ํ์ธ (๋ก๊ทธ์ธ, ๋ก๊ทธ์ธ์ด ์ผ๋จ ์ ๋๋ฉด ์ธ์ฆ์ด ์ ๋ฉ๋๋ค.)
- ์ธ๊ฐ(Authorization): ๊ถํ ๋ถ์ฌ (ADMIN ๊ถํ์ฒ๋ผ ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ๊ถํ, ์ธ์ฆ์ด ์์ด์ผ ์ธ๊ฐ๊ฐ ์์ต๋๋ค.)

6-3. 403 Forbidden
์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ์ง๋ง ์น์ธ์ ๊ฑฐ๋ถํจ
์ฃผ๋ก ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ ์์ง๋ง, ์ ๊ทผ ๊ถํ์ด ๋ถ์ถฉ๋ถํ ๊ฒฝ์ฐ์ ๋ํ๋๋ ์ํ ์ฝ๋ ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ADMIN ๋ฑ๊ธ์ด ์๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ์ง๋ง, ADMIN ๋ฑ๊ธ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ..?
์ค์๊ฐ ๋๊ตฌ๋๊ณ ?
6-4. 404 Not Found
์์ฒญ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์
์ด ์ํ ์ฝ๋๋ ๋ง์ด ๋ดค์ ๊ฒ์ ๋๋ค. ๊ทธ๋์ ์ค์ํ๋ฐ์.
์์ฒญ ๋ฆฌ์์ค๊ฐ ์๋ฒ์ ์์ ๋ ํน์ ํด๋ผ์ด์ธํธ๊ฐ ๊ถํ์ด ๋ถ์กฑํ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ์จ๊ธฐ๊ณ ์์ ๋ ๋ํ๋๋ ์ํ ์ฝ๋ ์ ๋๋ค.
- ์๋ฒ: ํด๋ผ์ด์ธํธ์ผ! ๋ ์ด ๋ฆฌ์์ค ๋ํํ ์ ๊ณตํด์ค ์ ์์ด!
- ํด๋ผ์ด์ธํธ: ๐ญ
7. ์ํ ์ฝ๋ 5xx (Server Error, ์๋ฒ ์ค๋ฅ)
์๋ฒ ๋ฌธ์ ๋ก ์ค๋ฅ ๋ฐ์
์๋ฒ์ ๋ฌธ์ ๊ฐ ์์ด์ ๋ฐ์ํ ์ค๋ฅ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์๋ ํ๋ฉด ์ฑ๊ณตํ ์๋ ์์ต๋๋ค. (๋ณต๊ตฌ๊ฐ ๋๊ฑฐ๋ ๋ฑ๋ฑ)
7-1. 500 Internal Server Error
์๋ฒ ๋ฌธ์ ๋ก ์ค๋ฅ ๋ฐ์, ์ ๋งคํ๋ฉด 500 ์ค๋ฅ
์๋ฒ ๋ด๋ถ ๋ฌธ์ ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ํ๋๋ ์ํ ์ฝ๋ ์ ๋๋ค.
์ ๋งคํ๋ฉด 500 ์ค๋ฅ๋์.
7-2. 503 Service Unavailable
์๋น์ค ์ด์ฉ ๋ถ๊ฐ
์๋ฒ๊ฐ ์ผ์์ ์ธ ๊ณผ๋ถํ ๋๋ ์์ ๋ ์์ ์ผ๋ก ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ ๋ ๋ํ๋๋ ์ํ ์ฝ๋ ์ ๋๋ค.
Retry-After ํค๋ ํ๋๋ก ์ผ๋ง ๋ค์ ๋ณต๊ตฌ๊ฐ ๋๋์ง ๋ณด๋ผ ์๋ ์์ต๋๋ค.
๊ทผ๋ฐ ์๊ฑธ ๋ณด๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๊ณ ๋ณธ๋ค๋ฉด 500 ์์ฃผ๋ก ๋ณด๊ฒ ์ฃ .
์๋ํ๋ฉด, ์ ๋งํ๋ฉด ์๋ฒ์์๋ 500๋ฒ๋ ์ค๋ฅ๋ฅผ ๋ง๋ค๋ฉด ์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ง์ง ์๋ฒ์ ๋ฌธ์ ๊ฐ ํฐ์ก์ ๋ 500๋ฒ๋ ์ค๋ฅ๋ฅผ ๋ง๋ญ๋๋ค.
๊ทธ๋ผ ๋์
์ด๋ฒ์๋ง ์งค ๋ง์ด ์ด๊ฑฐ๊ณ ์งค ์ฐ๊ธฐ ๊ท์ฐฎ์์ ๋ค์ ์น์ ๋ถํฐ๋ ๊ฑฐ์ ์ ์ธ ์์ .

'STUDY๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP] 8. HTTP ํค๋2 - ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ (1) | 2025.03.13 |
---|---|
[HTTP] 7. HTTP ํค๋1 - ์ผ๋ฐ ํค๋๐ช (2) | 2025.03.09 |
[HTTP] 5. HTTP ๋ฉ์๋ ํ์ฉ (0) | 2025.03.03 |
[HTTP] 4. HTTP ๋ฉ์๋ (0) | 2025.03.02 |
[HTTP] 3. HTTP ๊ธฐ๋ณธ (2) | 2025.02.28 |