[HTTP] 6.HTTP ์ํ์ฝ๋
1. HTTP ์ํ์ฝ๋
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ์์ฒญ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ต์์ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ
- 1xx (Informational) : ์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ์ค
- 2xx (Successful) : ์์ฒญ ์ ์ ์ฒ๋ฆฌ
- 3xx (Redirection) : ์์ฒญ์ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ ํ๋์ด ํ์
- 4xx (Client Error) : ํด๋ผ์ด์ธํธ ์ค๋ฅ, ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
- 5xx (Server Error) : ์๋ฒ ์ค๋ฅ, ์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํจ
๋ง์ฝ ๋ชจ๋ฅด๋ ์ํ ์ฝ๋๊ฐ ๋ํ๋๋ฉด?
- ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ํ ์ ์๋ ์ํ์ฝ๋๋ฅผ ์๋ฒ๊ฐ ๋ฐํํ๋ฉด?
- ํด๋ผ์ด์ธํธ๋ ์์ ์ฝ๋๋ก ํด์ํด์ ์ฒ๋ฆฌ
- ๋ฏธ๋์ ์๋ก์ด ์ํ ์ฝ๋๊ฐ ์ถ๊ฐ๋์ด๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ณ๊ฒฝํ์ง ์์๋ ๋จ
- ex) 299 ??? -> 2xx (Successful)
451 ??? -> 4xx (Client Error)
599 ??? -> 5xx (Server Error)
1xx (Informational) : ์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ์ค
- ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์๋ต
2xx (Successful) : ์์ฒญ ์ ์ ์ฒ๋ฆฌ
- ์ฑ๊ณต
200 OK 201 Created 202 Accepted 204 NO Content |
<1> 200 OK
<2> 201 Created
<3> 202 Accepted
- ์์ฒญ์ด ์ ์๋์์ผ๋ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์์
- ๋ฐฐ์น ์ฒ๋ฆฌ ๊ฐ์ ๊ณณ์์ ์ฌ์ฉ
ex) ์์ฒญ ์ ์ ํ 1์๊ฐ ๋ค์ ๋ฐฐ์น ํ๋ก์ธ์ค๊ฐ ์์ฒญ์ ์ฒ๋ฆฌ
<4> 204 No Content
- ์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ์ง๋ง, ์๋ต ํ์ด๋ก๋ ๋ณธ๋ฌธ์ ๋ณด๋ผ ๋ฐ์ดํฐ๊ฐ ์์
- ex) ์น ๋ฌธ์ ํธ์ง๊ธฐ์์ save ๋ฒํผ
- save ๋ฒํผ์ ๊ฒฐ๊ณผ๋ก ์๋ฌด ๋ด์ฉ์ด ์์ด๋ ๋จ
- save ๋ฒํผ์ ๋๋ฌ๋ ๊ฐ์ ํ๋ฉด์ ์ ์งํด์ผํจ
- ๊ฒฐ๊ณผ ๋ด์ฉ์ด ์์ด๋ 204 ํ์ด์ง(2xx)๋ง์ผ๋ก ์ฑ๊ณต์ ์ธ์ํ ์ ์์
* ๊ฐ๋ฐํ ๋ 200๋ง / 200, 201๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ง์
3xx (Redirection) : ์์ฒญ์ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ ํ๋์ด ํ์
300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect |
๋ฆฌ๋ค์ด๋ ์ ์ดํด
- ์น๋ธ๋ผ์ฐ์ ๋ 3xx ์๋ต์ ๊ฒฐ๊ณผ์ Location ํค๋๊ฐ ์์ผ๋ฉด, Location ์์น๋ก ์๋ ์ด๋ (= ๋ฆฌ๋ค์ด๋ ํธ)
[์๋ ๋ฆฌ๋ค์ด๋ ํธ ํ๋ฆ]
๋ฆฌ๋ค์ด๋ ์ ์ข ๋ฅ
(1) ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์ (ํน์ ๋ฆฌ์์ค์ URI๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋)
- ex) /members -> /users
- ex) /event -> /new-event
301, 308
- ์๋ URL ์ฌ์ฉX, ๊ฒ์ ์์ง ๋ฑ์์๋ ๋ณ๊ฒฝ ์ธ์ง
- 301 Moved Permanently : ๋ฆฌ๋ค์ด๋ ํธ ์์ฒญ ๋ฉ์๋๊ฐGET์ผ๋ก ๋ณํ๊ณ ๋ณธ๋ฌธ ์ ๊ฑฐ๋ ์ ์์ (MAY, ํญ์ ๊ทธ๋ฐ๊ฑด ์๋)
- 308 Permanent Redirect : ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ ์ ์ง
[301]
[308]
* ๋ณดํต ์ค๋ฌด์์๋ 301 ์์ผ๋ก ์ฒ๋ฆฌ ๋ง์ดํจ (URL ๋ฐ๋๋ฉด ์ ๋ฌํด์ผํ๋ ๋ฐ์ดํฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์ GET์ผ๋ก ๋ฐ๊พธ๋๊ฒ ๋ง์)
* ์ค๋ฌด์์๋ 301๋ ์ ์ํ๊ณ ์ผ์์ ๋ฆฌ๋ค์ด๋ ์ ์ ๋ง์ด ์ฌ์ฉํจ
(2) ์ผ์์ ๋ฆฌ๋ค์ด๋ ์ (๋ฆฌ์์ค URI๊ฐ ์ผ์์ ์ผ๋ก ๋ณ๊ฒฝ)
- ์ฃผ๋ฌธ ์๋ฃ ํ ์ฃผ๋ฌธ ๋ด์ญ ํ๋ฉด์ผ๋ก ์ด๋
- PRG : POST / Redirect / Get
- ๋ฐ๋ผ์ ๊ฒ์ ์์ง ๋ฑ์์ URL ๋ณ๊ฒฝํ๋ฉด ์๋จ
302 Found
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณํ๊ณ ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์์ (MAY)
307 Temporary Redirect
- 302์ ๊ธฐ๋ฅ ๊ฐ์
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ ์ ์ง(์์ฒญ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์๋จ, MUST NOT)
303 See Other
- 302์ ๊ธฐ๋ฅ ๊ฐ์
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณ๊ฒฝ
PRG (POST / Redirect / Get)
์ผ์์ ์ธ ๋ฆฌ๋ค์ด๋ ์ - ์์
- POST๋ก ์ฃผ๋ฌธ ํ์ ๋ธ๋ผ์ฐ์ ์๋ก๊ณ ์นจํ๋ฉด?
-> ์๋ก๊ณ ์นจ์ ๋ค์ ์์ฒญ
-> ์ค๋ณต ์ฃผ๋ฌธ์ด ๋ ์ ์๋ค
[PRG ์ฌ์ฉ์ ]
[PRG ์ฌ์ฉํ]
* ๋ฌผ๋ก ์๋ฒ์์ ๋ง์์ผํจ (์ด๋ฏธ ์ฌ์ฉ๋ ์ฃผ๋ฌธ๋ฒํธ์ ๋๋ค ๋ฑ)
* ํด๋ผ์ด์ธํธ์์ ํ ๋ฒ ๋ ์ด๋ ๊ฒ ๋ง์์ฃผ๋ ๊ฒ์ด ์ข์
* ์ฃผ๋ฌธ ์๋ฃํ๋ฉด์์ ์๋ก๊ณ ์นจํด๋ GET์ผ๋ก ๊ฒฐ๊ณผ ํ๋ฉด๋ง ์กฐํ
์์)
- POST๋ก ์ฃผ๋ฌธ ํ ์๋ก ๊ณ ์นจ์ผ๋ก ์ธํ ์ค๋ณต ์ฃผ๋ฌธ ๋ฐฉ์ง - POST๋ก ์ฃผ๋ฌธ ํ์ ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ GET ๋ฉ์๋๋ก ๋ฆฌ๋ค์ด๋ ํธ - ์๋ก๊ณ ์นจํด๋ ๊ฒฐ๊ณผ ํ๋ฉด์ GET์ผ๋ก ์กฐํ - ์ค๋ณต ์ฃผ๋ฌธ ๋์ ์ ๊ฒฐ๊ณผ ํ๋ฉด๋ง GET์ผ๋ก ๋ค์ ์์ฒญ |
๊ทธ๋์ ๋ญ ์จ์ผํ๋๊ฐ?
307, 303 ๊ถ์ฅํ์ง๋ง 302๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉ ์๋ ๋ฆฌ๋ค์ด๋ ์ ์์ GET์ผ๋ก ๋ณํด๋ ๋๋ฉด 302๋ฅผ ์ฌ์ฉํด๋ ๋ฌธ์ ์์ |
(3) ๊ธฐํ ๋ฆฌ๋ค์ด๋ ์
- 300 Multiple Choices : ์์
- 304 Not Modified
> ์บ์๋ฅผ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ
> ํด๋ผ์ด์ธํธ์๊ฒ ๋ฆฌ์์ค๊ฐ ์์ ๋์ง ์์์์ ์๋ ค์ค
๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ PC์ ์ ์ฅ๋ ์บ์๋ฅผ ์ฌ์ฌ์ฉ (์บ์๋ก ๋ฆฌ๋ค์ด๋ ํธ)
> 304 ์๋ต์ ์๋ต์ ๋ฉ์์ง ๋ฐ๋๋ฅผ ํฌํจํ๋ฉด ์๋จ (๋ก์ปฌ ์บ์๋ฅผ ์ฌ์ฉํด์ผํ๋ฏ๋ก)
> ์กฐ๊ฑด๋ถ GET, HEAD ์์ฒญ์ ์ฌ์ฉ
4xx (Client Error) : ํด๋ผ์ด์ธํธ ์ค๋ฅ, ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ชป๋ ๋ฌธ๋ฒ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
- ์ค๋ฅ์ ์์ธ์ด ํด๋ผ์ด์ธํธ
- ์ค์) ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ ์๋ชป๋ ์์ฒญ/๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๊ฐ์ ์ฌ์๋๊ฐ ์คํจ
400 Bad Request
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ชป๋ ์์ฒญํด์ ์๋ฒ๊ฐ ์์ฒญ ์ฒ๋ฆฌ ๋ถ๊ฐ
- ์์ฒญ ๊ตฌ๋ฌธ/๋ฉ์์ง ๋ฑ๋ฑ ์ค๋ฅ
- ํด๋ผ์ด์ธํธ๋ ์์ฒญ ๋ด์ฉ์ ๋ค์ ๊ฒํ ํ๊ณ ๋ณด๋ด์ผํจ
- ex) ์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ชป๋๊ฑฐ๋, API ์คํ์ด ๋ง์ง ์์๋
401 Unauthorized
- ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ๋ฆฌ์์ค์ ๋ํ ์ธ์ฆ์ด ํ์
- 401 ์ค๋ฅ ๋ฐ์์ ์๋ต์ WWW-Authenticate ํค๋์ ํจ๊ป ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ค๋ช
- ์ฐธ๊ณ )
> ์ธ์ฆ(Authentication) : ๋ณธ์ธ์ด ๋๊ตฌ์ธ์ง ํ์ธ (๋ก๊ทธ์ธ)
> ์ธ๊ฐ (Authorization) : ๊ถํ๋ถ์ฌ (ADMIN ๊ถํ์ฒ๋ผ ํน์ ๋ฆฌ์์ค ์ ๊ทผ ๊ถํ / ์ธ์ฆ์ด ์์ด์ผ ์ธ๊ฐ๊ฐ ์์)
> ์ค๋ฅ ๋ฉ์์ง๊ฐ Unautorized์ด์ง๋ง ์ธ์ฆ๋์ง ์์์ ์๋ฏธ
403 Forbidden
- ์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ์ง๋ง ์น์ธ ๊ฑฐ๋ถ
- ์ฃผ๋ก ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ ์์ง๋ง ์ ๊ทผ ๊ถํ์ด ๋ถ์ถฉ๋ถํ ๊ฒฝ์ฐ
ex) ์ด๋๋ฏผ ๋ฑ๊ธ์ด ์๋ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ํ์ง๋ง ์ด๋๋ฏผ ๋ฑ๊ธ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ
404 Not Found
- ์์ฒญ ๋ฆฌ์์ค ์๋ฒ์ ์์
- ๋๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ถํ์ด ๋ถ์กฑํ ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ์จ๊ธฐ๊ณ ์ถ์ ๋
5xx (Server Error) : ์๋ฒ ์ค๋ฅ, ์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํจ
- ์๋ฒ ๋ฌธ์ ๋ก ์ค๋ฅ ๋ฐ์
- ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฌ์๋ํ๋ฉด ์ฑ๊ณตํ ์๋ ์์ (๋ณต๊ตฌ๊ฐ ๋๊ฑฐ๋ ๋ฑ๋ฑ)
500 Internal Server Error
- ์๋ฒ ๋ด๋ถ ๋ฌธ์ ๋ก ์ค๋ฅ ๋ฐ์
- ์ ๋งคํ๋ฉด 500์ค๋ฅ
503 Service Unavailable
- ์๋น์ค ์ด์ฉ ๋ถ๊ฐ
- ์๋ฒ๊ฐ ์ผ์์ ์ธ ๊ณผ๋ถํ ๋๋ ์์ ๋ ์์ ์ผ๋ก ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์
- Retry-After ํค๋ ํ๋๋ก ์ผ๋ง๋ค์ ๋ณต๊ตฌ๋๋์ง ๋ณด๋ผ ์๋ ์์
'๐จโ๐ป Web Development > HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP] 7.HTTP ํค๋2 - ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ (0) | 2023.03.04 |
---|---|
[HTTP] 7.HTTP ํค๋1 - ์ผ๋ฐํค๋ (0) | 2023.03.03 |
[HTTP] 5.HTTP ๋ฉ์๋ ํ์ฉ (0) | 2023.03.03 |
[HTTP] 4.HTTP ๋ฉ์๋ (0) | 2023.03.02 |
[HTTP] 3.HTTP ๊ธฐ๋ณธ (0) | 2023.03.02 |
์ต๊ทผ๋๊ธ