์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- springboot
- Community-App
- MySQL
- BBangting
- Security
- ์ฑ๊ฐ๋ฐ
- ์์ฒญ
- log
- PROJECT
- BPM
- HTTP
- kotlin
- MVC
- Logging
- Spring
- Firebase
- JPA
- API
- ๊น์ํ
- Inflearn
- Mapping
- docker
- Today
- Total
yeon's blog
[HTTP ์น ๊ธฐ๋ณธ ์ง์] HTTP ๋ฉ์๋ ํ์ฉ - ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก ๋ณธ๋ฌธ
[HTTP ์น ๊ธฐ๋ณธ ์ง์] HTTP ๋ฉ์๋ ํ์ฉ - ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
yeonii 2023. 12. 3. 17:59๐ฑ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
- GET
- ์ฃผ๋ก ์ ๋ ฌ ํํฐ(๊ฒ์์ด)
์ฃผ๋ก GET ๋ฐฉ์์ผ๋ก ๋ง์ด ์ฌ์ฉํ๊ณ ๊ฒ์์ด๋ก ๊ฒ์ํ ๋, ๊ฒ์ํ ๋ฆฌ์คํธ์ ์ ๋ ฌ ์กฐ๊ฑด์ ๋ฃ์ ๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํด์ ๋ง์ด ์ฌ์ฉํ๋ค.
๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ก
- POST, PUT, PATCH
- ํ์ ๊ฐ์ , ์ํ ์ฃผ๋ฌธ, ๋ฆฌ์์ค ๋ฑ๋ก, ๋ฆฌ์์ค ๋ณ๊ฒฝ
ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์ ์กํ ๋ HTTP ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค. POST, PUT, PATCH ๋ฐฉ์์ผ๋ก ์ฃผ๋ก ์ฌ์ฉํ๋ค.
ํ์๊ฐ์ ์ ํ๋ ค๋ฉด ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํด์ผ ํ๋ค. ๊ทธ ๋ค์์ ์ํ์ ์ฃผ๋ฌธํ๊ฑฐ๋ ์๋ก์ด ๋ฆฌ์์ค๋ฅผ ๋ฑ๋กํ๊ฑฐ๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค.
ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์กํ ๋ 4๊ฐ์ง ์ํฉ
1. ์ ์ ๋ฐ์ดํฐ ์กฐํ - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๋ฏธ์ฌ์ฉ
- ์ด๋ฏธ์ง, ์ ์ ํ ์คํธ ๋ฌธ์
- ์กฐํ๋ GET ์ฌ์ฉ
- ์ ์ ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์์ด ๋ฆฌ์์ค ๊ฒฝ๋ก๋ก ๋จ์ํ๊ฒ ์กฐํ ๊ฐ๋ฅ
ํด๋ผ์ด์ธํธ์์ /static/star.jpg ๋ฅผ ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด ์๋ฒ์์ star ์ด๋ฏธ์ง๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํด์ค๋ค. ์ ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋๋ ์ด๋ฏธ์ง๋ ์ ์ ํ ์คํธ ๋ฌธ์๋ก ์กฐํํ๊ธฐ ๋๋ฌธ์ GET์ผ๋ก ์ฌ์ฉํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์์ด ๋จ์ํ ๋ฆฌ์์ค ๊ฒฝ๋ก๋ก ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
2. ๋์ ๋ฐ์ดํฐ ์กฐํ - ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์ฌ์ฉ
- ์ฃผ๋ก ๊ฒ์, ๊ฒ์ํ ๋ชฉ๋ก์์ ์ ๋ ฌ ํํฐ(๊ฒ์์ด)
- ์กฐํ ์กฐ๊ฑด์ ์ค์ฌ์ฃผ๋ ํํฐ, ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๋ ์ ๋ ฌ ์กฐ๊ฑด์ ์ฃผ๋ก ์ฌ์ฉ
- ์กฐํ๋ GET ์ฌ์ฉ
- GET์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ
๊ตฌ๊ธ์์ ๊ฒ์ํ ๋ ๊ฒ์์ด๋ ์ถ๊ฐ ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ํ ๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ค์ ์ฌ์ฉํด์ ์๋ฒ์๊ฒ ์์ฒญํ๋ค. ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ฒ์์ key์ value๋ฅผ ๋ณผ ์ ์๋ค. ๊ทธ๊ฑฐ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ค. ์ฃผ๋ก ๊ฒ์์ ํ๊ฑฐ๋ ๊ฒ์ํ ๋ชฉ๋ก์์ ์ ๋ ฌํ๊ฑฐ๋ ํํฐํ ๋ ์ถ๊ฐ ๋ฐ์ดํฐ๋ค์ด ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ก ์์ฒญํ๋ค. ์กฐํ ์กฐ๊ฑด์ ์ค์ฌ์ฃผ๋ ํํฐ ๋ค์์ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๋ ์ ๋ ฌ ์กฐ๊ฑด์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์ด๊ฒ๋ ์กฐํ๋ผ GET ๋ฐฉ์์ผ๋ก ์ด์ฉํด์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์ ๋ฌํ๋ค.
3. HTML Form์ ํตํ ๋ฐ์ดํฐ ์ ์ก
1) POST ์ ์ก์ ์ ์ฅ
form ํ๊ทธ์์ action์ /save, POST ๋ฉ์๋, username ํผ๊ณผ age ํผ, ์ ์ก ๋ฒํผ์ ๋ง๋ค์ด์ ์ ์ก ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ HTTP ๋ฉ์์ง๋ฅผ ์์ฑํ๋ค. ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ ์ ์ฌํ๊ฒ key์ value ์คํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ HTTP ๋ฐ๋ ๋ฉ์์ง์ ๋ฃ๊ณ POST ๋ฐฉ์์ผ๋ก ์๋ฒ์ ์ ์ก์ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ์ ํ๋ค.
2) GET ์ ์ก์ ์ ์ฅ
form์ ํตํด์ ๋ฐ์ดํฐ ์ ์กํ ๋ GET ๋ฉ์๋๋ก ๋ณ๊ฒฝํ๋ฉด GET์ ๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ์๋ฒ์ ์ ๋ฌํ๋ค. save ๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ ๋ GET ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค. GET์ ์กฐํํ ๋ ์ฌ์ฉํ๋ค.
3) GET์ ์ก์ ์กฐํ
form์ ํตํด์ GET ๋ฐฉ์์ผ๋ก HTTP ๋ฉ์์ง์ username์ด ๊น์ด๊ณ age๊ฐ 20์ด ์ฌ๋์ ๋ฆฌ์คํธ์์ ํํฐ๋ง์ ๋ด์์ ์๋ฒ์ ๋ณด๋ธ๋ค.
4) multipart/form-data
๋ฉ์์ง ๋ฐ๋์ username๊ณผ age๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํธ๋ก ๋์ด ์๋ ํ์ผ๊น์ง POST ๋ฉ์๋๋ก ์ ์กํ๋ค. Content-type์ multipart/form-data ๋ฐ์ดํฐ๋ก ๋ค์ด๊ฐ๊ณ boundary๋ ์น์ผ๋ก ์๋ ์์ฑํด์ ๊ฒฝ๊ณ๋ก ๋๋ ์ง๋ค.
HTML Form์ ํตํ ๋ฐ์ดํฐ ์ ์ก ์ ๋ฆฌ
- HTML Form submit ์ POST ์ ์ก
- ์) ํ์ ๊ฐ์ , ์ํ ์ฃผ๋ฌธ, ๋ฐ์ดํฐ ๋ณ๊ฒฝ
- Context-Type: application/x-www-form-urlencoded ์ฌ์ฉ
- form์ ๋ด์ฉ์ ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด์ ์ ์ก(key = value, ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์)
- ์ ์ก ๋ฐ์ดํฐ๋ฅผ url encoding ์ฒ๋ฆฌ
- ์) abc๊น → abc%EA%B9%80
- HTML Form์ GET ์ ์ก๋ ๊ฐ๋ฅ
- Content-Type: multipart/form-data
- ํ์ผ ์ ๋ก๋ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ ์ก์ ์ฌ์ฉ
- ๋ค๋ฅธ ์ข ๋ฅ์ ์ฌ๋ฌ ํ์ผ๊ณผ ํผ์ ๋ด์ฉ ํจ๊ป ์ ์ก ๊ฐ๋ฅ
- ์ฐธ๊ณ : HTML Form ์ ์ก์ GET, POST๋ง ์ง์
4. HTTP API ๋ฐ์ดํฐ ์ ์ก
ํด๋ผ์ด์ธํธ์์ HTTP API๋ก ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋๋ฐ ์ง์ ๋ง๋ค์ด์ ์ ์กํ๋ฉด ๋๋ค. ํด๋ผ์ด์ธํธ์ /members๊ฐ ์๊ณ Content-Type์ application/json์ผ๋ก ๋ฐ์ดํฐ ์ ์กํ๋ฉด ๋๋ค.
- ์๋ฒ to ์๋ฒ
- ๋ฐฑ์๋ ์์คํ ํต์
- ์ฑ ํด๋ผ์ด์ธํธ
- ์์ดํฐ, ์๋๋ก์ด๋
- ์น ํด๋ผ์ด์ธํธ
- HTML์์ Form ์ ์ก ๋์ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ํตํ ํต์ ์ ์ฌ์ฉ
- ์) React, VueJs ๊ฐ์ ์น ํด๋ผ์ด์ธํธ์ API ํต์
- POST, PUT, PATCH: ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ์ก
- GET: ์กฐํ, ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ดํฐ ์ ๋ฌ
- Content-Type: application/json์ ์ฃผ๋ก ์ฌ์ฉ
- TEXT, XML, JSON ๋ฑ