Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- ์์ฒญ
- Mapping
- MySQL
- HTTP
- springboot
- Inflearn
- BBangting
- Logging
- MVC
- JPA
- Spring
- BPM
- Security
- PROJECT
- ์ฑ๊ฐ๋ฐ
- docker
- log
- kotlin
- Community-App
- ๊น์ํ
- Firebase
- API
Archives
- Today
- Total
yeon's blog
[HTTP ์น ๊ธฐ๋ณธ ์ง์] HTTP ์ํ์ฝ๋ ๋ณธ๋ฌธ
๐ฑ HTTP ์ํ์ฝ๋ ์๊ฐ
์ํ์ฝ๋: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋์ ๋, ์์ฒญ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ตํด์ฃผ๋ ๊ธฐ๋ฅ
๐ 1xx (Informational): ์์ฒญ์ด ์์ ๋์ด ์ฒ๋ฆฌ์ค โก๏ธ ๊ฑฐ์ ์ฌ์ฉ๋์ง X
2xx (Successful): ์์ฒญ ์ ์ ์ฒ๋ฆฌ
3xx (Redirection): ์์ฒญ์ ์๋ฃํ๋ ค๋ฉด ์ถ๊ฐ ํ๋ ํ์
4xx (Client Error): ํด๋ผ์ด์ธํธ ์ค๋ฅ, ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์์
5xx (Server Error): ์๋ฒ ์ค๋ฅ, ์๋ฒ๊ฐ ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํจ
๐ฑ 2xx - ์ฑ๊ณต
200 OK
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์์์ ์๋ฆฌ๋ ์ํ์ฝ๋
201 Created
- POST๋ก ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ฆฌ์์ค URI๋ฅผ ์๋ฒ์์ ์์ฑํ๋ ์ํ์ฝ๋
- HTTP Header Location์ ์์ฑ๋ ๋ฆฌ์์ค์ URI ์์ฑ
202 Accepted
- ์์ฒญ์ด ์ ์ ๋์์ผ๋ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์ง ์์ ์ํ์ฝ๋
- ์ ์ฌ์ฉํ์ง X
204 No Content
- ์๋ฒ๊ฐ ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ์ํ ํ์ง๋ง ์๋ต ํ์ด๋ก๋ ๋ณธ๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ์๋ ์ํ์ฝ๋
๐ฑ 3xx - ๋ฆฌ๋ค์ด๋ ์
3xx (Redirection): ์์ฒญ์ ์๋ฃํ๊ธฐ ์ํด ์ ์ ์์ด์ ํธ์ ์ถ๊ฐ ์กฐ์น ํ์
๐ 300: Multiple Choices
301: Moved Permanently
302: Found
303: See Other
304: Not Modified
307: Temporary Redirect
308: Permanent Redirect
๋ฆฌ๋ค์ด๋ ์ ์ ์ดํด
๋ฆฌ๋ค์ด๋ ์ ์ ์ข ๋ฅ
- ์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
: ํน์ ๋ฆฌ์์ค์ URI๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋
- /members โก๏ธ /users
- /event โก๏ธ /new-event
- ์ผ์ ๋ฆฌ๋ค์ด๋ ์
: ์ผ์์ ์ธ ๋ณ๊ฒฝ
- RPG: Post/Redirect/Get
- ํน์ ๋ฆฌ๋ค์ด๋ ์ : ๊ฒฐ๊ณผ ๋์ ์บ์ ์ฌ์ฉ
์๊ตฌ ๋ฆฌ๋ค์ด๋ ์
- ๋ฆฌ์์ค์ URI๊ฐ ์๊ตฌ์ ์ผ๋ก ์ด๋
- ์๋์ URI ์ฌ์ฉ X, ๊ฒ์ ์์ง ๋ฑ์์๋ ๋ณ๊ฒฝ ์ธ์ง
- ์) /members -> /users, /event -> /new-event
301 Moved Permanently
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณํ๊ณ , ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์์
308 Permanent Redirect
- 301๊ณผ ๊ธฐ๋ฅ์ ๊ฐ์
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ ์ ์ง
์ผ์ ๋ฆฌ๋ค์ด๋ ์
- ๋ฆฌ์์ค์ URI๊ฐ ์ผ์์ ์ผ๋ก ๋ณ๊ฒฝ
- ๋ฐ๋ผ์ ๊ฒ์ ์์ง ๋ฑ์์ URL์ ๋ณ๊ฒฝํ๋ฉด ์๋จ
- PRG(Post/Redirect/Get)
302 Found
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณํ๊ณ , ๋ณธ๋ฌธ์ด ์ ๊ฑฐ๋ ์ ์์
307 Temporary Redirect
- 302์ ๊ธฐ๋ฅ์ ๊ฐ์
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋์ ๋ณธ๋ฌธ ์ ์ง(์์ฒญ ๋ฉ์๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์๋จ)
303 See Other
- 302์ ๊ธฐ๋ฅ์ ๊ฐ์
- ๋ฆฌ๋ค์ด๋ ํธ์ ์์ฒญ ๋ฉ์๋๊ฐ GET์ผ๋ก ๋ณ๊ฒฝ
PRG (Post/Redirect/Get)
์์ - POST๋ก ์ฃผ๋ฌธ ํ์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด?
→ ์๋ก๊ณ ์นจ์ ๋ค์ ์์ฒญ
→ ์ค๋ณต ์ฃผ๋ฌธ์ด ๋ ์ ์์
- POST๋ก ์ฃผ๋ฌธ ํ์ ์๋ก ๊ณ ์นจ์ผ๋ก ์ธํ ์ค๋ณต ์ฃผ๋ฌธ ๋ฐฉ์ง
- POST๋ก ์ฃผ๋ฌธ ํ์ ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ๋ฉด์ GET ๋ฉ์๋๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์๋ก๊ณ ์นจํด๋ ๊ฒฐ๊ณผ ํ๋ฉด์ GET์ผ๋ก ์กฐํ
- ์ค๋ณต ์ฃผ๋ฌธ ๋์ ์ ๊ฒฐ๊ณผ ํ๋ฉด๋ง GET์ผ๋ก ๋ค์ ์์ฒญ
- RPG ์ฌ์ฉ ์
2. RPG ์ฌ์ฉ ํ
302, 307, 303 ๊ทธ๋์ ๋ญ ์จ์ผ ํ๋์?
๐ 302 Found: Get์ผ๋ก ๋ณํ ์ ์์
307 Temporary Redirect: ๋ฉ์๋๊ฐ ๋ณํ๋ฉด ์๋จ
303 See Other: GET์ผ๋ก ๋ณ๊ฒฝํจ
ํน์ ๋ฆฌ๋ค์ด๋ ์
300 Multiple Choice
304 Not Modified
๐ฑ 4xx - ํด๋ผ์ด์ธํธ ์ค๋ฅ
4xx (Client Error)
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ชป๋ ๋ฌธ๋ฒ ๋ฑ์ผ๋ก ์๋ฒ๊ฐ ์์ฒญ์ ์ํํ ์ ์๋ ์ํ์ฝ๋
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ชป๋ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ ๊ฒ.
400 Bad Request
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ชป๋ ์์ฒญ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์ํ์ฝ๋
- ์์ฒญ ๊ตฌ๋ฌธ, ๋ฉ์์ง ๋ฑ์ ์ค๋ฅ → ์์ฒญ ๋ด์ฉ ๊ฒํ ํ์
401 Unauthorized
- ํด๋ผ์ด์ธํธ๋ ํด๋น ๋ฆฌ์์ค์ ๋ํ ์ธ์ฆ ํ์๋ฅผ ์๋ฆฌ๋ ์ํ์ฝ๋
๐ ์ธ์ฆ(Authentication): ๋ณธ์ธ์ด ๋๊ตฌ์ธ์ง ํ์ธํ๋ ๊ณผ์
์ธ๊ฐ(Authorization): ํน์ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ด ์๋ ์ฌ๋๋ง ๋ณผ ์ ์๋ ๊ถํ
403 Forbidden
- ์๋ฒ๊ฐ ์์ฒญ์ ์ดํดํ์ง๋ง ๊ถํ์ผ๋ก ์ธํด ๊ฑฐ๋ถํ๋ ์ํ์ฝ๋
- ex) ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ ์์ง๋ง ์ ๊ทผ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ, ์ด๋๋ฏผ ๋ฑ๊ธ์ด ์๋ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค๋ก ๋ก๊ทธ์ธ์ ํ์ง๋ง ์ด๋๋ฏผ ๋ฑ๊ธ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ ๋ฑ
404 Not Found
- ์์ฒญ ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์๋ ์ํ์ฝ๋
๐ฑ 5xx - ์๋ฒ ์ค๋ฅ
5xx (Server Error)
- ์๋ฒ ๋ฌธ์ ๋ก ์ค๋ฅ ๋ฐ์
- ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฌ์๋ ํ๋ฉด ๋ณต๊ตฌํ๊ฑฐ๋ ์ฑ๊ณตํ ์ ์์
500 Internal Server Error
- ์๋ฒ ๋ด๋ถ ๋ฌธ์ ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ํ์ฝ๋
503 Service Unvailable
- ์๋ฒ๊ฐ ์ผ์์ ์ผ๋ก ๊ณผ๋ถํ๊ฐ ๋๊ฑฐ๋ ์์ ๋ ์์ ์ผ๋ก ์ ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ์ํ์ฝ๋
- Retry-After ํค๋๋ก ์ผ๋ง ๋ค์ ๋ณต๊ตฌ๋๋์ง ์์ ์๊ฐ์ ๋ณผ ์ ์์