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