์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- tcp
- http method
- Android Studio
- Kotlin
- FACTORY
- URN
- di
- Dialog
- datepicker
- swagger
- udp
- Factory Method Pattern
- ์ฑ์ฉํ์ ํ
- Python
- ์ด๋ ธํ ์ด์
- 2024-08-20
- uri
- OpenAPI
- 2024-08-21
- fontstyle
- url
- ์ฝ๋์
- ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ
- AndroidStudio
- ํ๋ IT&E
- menutab
- OOP
- IOC
- ๊ธฐ์ด100์
- reflection
dingdong coding
HTTP Method ๋ณธ๋ฌธ
HTTP ๋ฉ์๋๋ฅผ ์์๋ณด๊ธฐ ์ HTTP API์ ๋ํด ์๊ณ ๋์ด๊ฐ์๋ค.
HTTP API
HTTP๋ฅผ ์ฌ์ฉํด์ ์๋ก ์ ํด๋ ์คํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํต์ ํ๋ ๊ฒ์ผ๋ก ์ดํดํ๋ฉด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์๋นํ ๋์ ์๋ฏธ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
HTTP API vs REST API
REST API๋ HTTP API์ ์ฌ๋ฌ๊ฐ์ง ์ ์ฝ์กฐ๊ฑด์ด ์ถ๊ฐ๋๋ ๊ฒ
• ์ง์์ ์๋ณ
• ๋ฉ์์ง๋ฅผ ํตํ ๋ฆฌ์์ค ์กฐ์
• ์๊ธฐ์์ ์ ๋ฉ์์ง
• ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ์ ๋ํ ์์ง์ผ๋ก์ ํ์ดํผ๋ฏธ๋์ด
์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ๋ํ์ ์ผ๋ก ๊ตฌํํ๊ธฐ ์ด๋ ค์ด ๋ถ๋ถ์ด ๋ง์ง๋ง์ ์๋ ๋ถ๋ถ์ผ๋ก ์ด๊ฒ์ HTML์ฒ๋ผ ํ์ดํผ๋งํฌ๊ฐ ์ถ๊ฐ๋์ด์ ๋ค์์ ์ด๋ค API๋ฅผ ํธ์ถํด์ผ ํ๋์ง๋ฅผ ํด๋น ๋งํฌ๋ฅผ ํตํด์ ๋ฐ์ ์ ์์ด์ผํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ๋ถ๋ถ์ ์๋ฒฝํ๊ฒ ์งํค๋ฉด์ ๊ฐ๋ฐํ๋ ๊ฒ์ RESTful API๋ผ๊ณ ํ๋๋ฐ ์ค๋ฌด์์ ์ด๋ฐ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ฐํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ์ด๋ ต๊ณ , ๋ ์ถ๊ฐ ๊ฐ๋ฐ ๋น์ฉ๋๋น ํจ๊ณผ๊ฐ ์๋ ๊ฒ๋ ์๋๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ฏธ ๋ง์ ์ฌ๋๋ค์ด ํด๋น ์กฐ๊ฑด์ ์งํค์ง ์์๋ REST API๋ผ๊ณ ํ๊ธฐ ๋๋ฌธ์ HTTP API๋ REST API๋ฅผ ๊ฑฐ์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ์์ ๋ด์ฉ์ ์๊ฒฉํ๊ฒ ์ง์ผ์ผ REST API๋ผ๊ณ ํ ์ ์์ต๋๋ค.
( ํ์ง๋ง ๋ค๋ค HTTP๋ฅผ REST API๋ผ๊ณ ์ด๋ฏธ ํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋๊ตฐ๊ฐ REST API๋ผ๊ณ ํ๋ฉด ๊ทธ๋ฅ HTTP API๋ฅผ ์ด์ผ๊ธฐ ํ๋๊ตฌ๋ ๋ผ๊ณ ์๊ฐํ๊ณ ๋ค์ผ๋ฉด ๋ฉ๋๋ค. ๋ฌผ๋ก ์๊ฒฉํ๊ฒ๋ ๋ค๋ฆ ๋๋ค. )
API URI ( Uniform Resource Identifier )
๊ฐ ๋ฆฌ์์ค๋ URI์ ์ํด ๊ณ ์ ํ๊ฒ ์๋ณ๋ฉ๋๋ค. ์ฆ, URI ์ค๊ณํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฆฌ์์ค ์๋ณ์ ๋๋ค.
REST API ์ค๊ณ ์ URI์ ๋ฆฌ์์ค์ ๋ํ ์์ ์ ์๋ฏธํ๋ ๋ฉ์๋๋ ๋ฃ์ง ์์ต๋๋ค.
- REST API๋ ๋ฆฌ์์ค๋ฅผ ์ค์ฌ์ผ๋ก ๋์์ธ ๋ฉ๋๋ค. ์ด ๋, ๋ฆฌ์์ค๋ ํด๋ผ์ด์ธํธ๊ฐ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ ์ข ๋ฅ์ ๊ฐ์ฒด, ๋ฐ์ดํฐ, ์๋น์ค๋ฅผ ํฌํจํฉ๋๋ค.
- ๊ฐ ๋ฆฌ์์ค๋ URI์ ์ํด ๊ณ ์ ํ๊ฒ ์๋ณ๋ฉ๋๋ค.
์ฆ, URI๋ ๋ฆฌ์์ค๋ง ์๋ณํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค์ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋์์ผ๋ก ํ๋ ํ์๋ฅผ ๋ถ๋ฆฌํด์ผํฉ๋๋ค.
HTTP Method
GET | ๋ฆฌ์์ค ์กฐํ |
POST | ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฑ๋ก์ ์ฌ์ฉ |
PUT | ๋ฆฌ์์ค๋ฅผ ๋์ฒด, ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ |
PATCH | ๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ |
DELETE | ๋ฆฌ์์ค ์ญ์ |
HEAD | GET๊ณผ ๋์ผํ์ง๋ง ๋ฉ์์ง ๋ถ๋ถ์ ์ ์ธํ๊ณ , ์ํ ์ค๊ณผ ํค๋๋ง ๋ฐํ |
OPTIONS | ๋์ ๋ฆฌ์์ค์ ๋ํ ํต์ ๊ฐ๋ฅ ์ต์ (๋ฉ์๋)์ ์ค๋ช (์ฃผ๋ก CORS์์ ์ฌ์ฉ) |
CONNECT | ๋์ ์์์ผ๋ก ์๋ณ๋๋ ์๋ฒ์ ๋ํ ํฐ๋์ ์ค์ |
TRACE | ๋์ ๋ฆฌ์์ค์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ์ํ |
1. GET
GET /user/1
GET์ ๋ฆฌ์์ค๋ฅผ ์กฐํํ๋ ์๋ฒ์์ ํน์ ํ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ๋ก๋๋ก ์์ฒญํฉ๋๋ค. ์๋ฒ์ ์ ๋ฌํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ ์ฟผ๋ฆฌ๋ฅผ ํตํด์ ์ ๋ฌํฉ๋๋ค. ์ฟผ๋ฆฌ ๋ฌธ์์ด( name = value )์ ๋ค์๊ณผ ๊ฐ์ด GET ์์ฒญ์ URL๋ก ์ ์ก๋ฉ๋๋ค.
๋ฉ์์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ง๋ง, ์ง์ํ์ง ์๋ ๊ณณ์ด ๋ง์์ ๊ถ์ฅํ์ง ์์ต๋๋ค. ๋ํ GET ์ ์ค๋ก์ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ง ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์์ ํ ๋๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์์ฒญ ์ Body ๊ฐ๊ณผ Content-Type์ด ๋น์์ ธ ์์ผ๋ฉฐ ๋ฐ์ดํฐ ์กฐํ์ ์ฑ๊ณตํ๋ค๋ฉด Body์ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ฅํด ์ฑ๊ณต์๋ต์ ๋ณด๋ด์ค๋๋ค. ๋ํ GET์ ์บ์ฑ์ด ๊ฐ๋ฅํด ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ ๋ ์กฐํํ ๊ฒฝ์ฐ ์ ์ฅํ ๊ฐ์ ์ฌ์ฉํ์ฌ ์กฐํ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
2. POST
POST๋ ์ง์ ๋ URI์ ์ ๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ฆ, ๋ฆฌ์์ค๋ฅผ ์์ฑ ๋๋ ์ ๋ฐ์ดํธ ํ๊ธฐ ์ํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ex ) ์ฃผ๋ก ํ์ผ ์ ๋ฐ์ดํธ, ์์ ๋ฐ์ดํฐ ๋ฑ๊ณผ ๊ฐ์ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ๋ณด๋ด๋ ค๋ ๊ฒฝ์ฐ
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ก URL์ด ์๋ Message Body ๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์์ฒญ ์ Body ๊ฐ๊ณผ Content-Type์ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค.
POST /user
body : {date : "example"}
Content-Type : "application/json"
์๋ฒ๋ ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ์ฃผ๋ก ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ก ์ ๊ท ๋ฆฌ์์ค ๋ฑ๋ก, ํ๋ก์ธ์ค ์ฒ๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฑ๊ณตํ๋ค๋ฉด Body ๊ฐ์ ์ ์ฅํ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ฅํ์ฌ ์ฑ๊ณต ์๋ต์ ๋ณด๋ด์ค๋๋ค.
์๋ฅผ ๋ค์ด POST๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ๋ฉ๋๋ค.
• HTML ์์์ ์ ๋ ฅ ๋ ํ๋์ ๊ฐ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ๋ก์ธ์ค์ ์ ๊ณต
ex ) HTML FORM์ ์ ๋ ฅํ ์ ๋ณด๋ก ํ์๊ฐ์ , ์ฃผ๋ฌธ ๋ฑ์์ ์ฌ์ฉ
• ๊ฒ์ํ, ๋ด์ค ๊ทธ๋ฃน, ๋ฉ์ผ๋ง ๋ฆฌ์คํธ, ๋ธ๋ก๋ ๋๋ ์ ์ฌํ ๊ธฐ์ฌ ๊ทธ๋ฃน์ ๋ฉ์์ง ๊ฒ์
ex ) ๊ฒ์ํ ๊ธ์ฐ๊ธฐ, ๋๊ธ๋ฌ๊ธฐ
• ์๋ฒ๊ฐ ์์ง ์๋ณํ์ง ์์ ์ ๋ฆฌ์์ค ์์ฑ
ex ) ์ ๊ท ์ฃผ๋ฌธ ์์ฑ
• ๊ธฐ์กด ์์์ ๋ฐ์ดํฐ ์ถ๊ฐ
ex ) ํ ๋ฌธ์ ๋์ ๋ด์ฉ ์ถ๊ฐํ๊ธฐ
3. PUT
PUT์ ์ง์ ๋ URI์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ๋์ฒด์ํต๋๋ค. ๋ง์น ํ์ผ ๋ฎ์ด์ฐ๊ธฐ์ ๊ฐ์ด ๋ฆฌ์์ค๊ฐ ์๋ค๋ฉด ๋์ฒดํ๊ณ ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์๋ก ์์ฑ์ํต๋๋ค. ( ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค ์์น๋ฅผ ์๊ณ URI ์ง์ )
POST์ PUT์ ์ฐจ์ด์ ์ PUT ์์ฒญ์ด ๋ฉฑ๋ฑ์ ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ฆ, ๋์ผํ PUT ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋ฉด ํญ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ฐ๋๋ก POST ์์ฒญ์ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ฉด ๋์ผํ ๋ฆฌ์์ค๋ฅผ ์ฌ๋ฌ ๋ฒ ์์ฑํ๋ ๋ถ์์ฉ์ด ์์ต๋๋ค.
์์ฒญ ๋ฉ์ธ์ง์ ๋ณธ๋ฌธ์ ๋ง๋ค๊ฑฐ๋ ์ ๋ฐ์ดํธํ ๋ฆฌ์์ค๋ฅผ ์ง์ ํฉ๋๋ค.
PUT /user/1
body : {date : "update example"}
Content-Type : "application/json"
4. PATCH
PATCH๋ ๋ฆฌ์์ค์ ๋ถ๋ถ ์ ๋ฐ์ดํธ๋ฅผ ์ํํฉ๋๋ค. ์์ฒญ ๋ณธ๋ฌธ์ ๋ฆฌ์์ค์ ์ ์ฉํ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ง์ ํฉ๋๋ค.
5. DELETE
DELETE๋ ์ง์ ๋ URI์ ๋ฆฌ์์ค๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
์๋๋ฆฌ์ค ์ ๋ฆฌ
HTTP Method ์์ฑ
• ์์ : ํธ์ถํด๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
• ๋ฉฑ๋ฑ Idempotent : ํ ๋ฒ ํธ์ถํ๋ ๋ ๋ฒ ํธ์ถํ๋ 100 ๋ฒ ํธ์ถํ๋ ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ๋ค.
- GET : ํ ๋ฒ ์กฐํํ๋ , ๋ ๋ฒ ์กฐํํ๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์กฐํ๋๋ค.
- PUT : ๊ฒฐ๊ณผ๋ฅผ ๋์ฒดํ๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ๋ฒ ํด๋ ์ต์ข ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
- DELETE : ๊ฒฐ๊ณผ๋ฅผ ์ญ์ ํ๋ค. ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ๋ฒ ํด๋ ์ญ์ ๋ ๊ฒฐ๊ณผ๋ ๋๊ฐ๋ค.
- POST : ๋ฉฑ๋ฑ์ด ์๋๋ค. ๋ ๋ฒ ํธ์ถํ๋ฉด ๊ฐ์ ๊ฒฐ์ ๊ฐ ์ค๋ณตํด์ ๋ฐ์ํ ์ ์๋ค.
• ์บ์ : ์๋ต๊ฒฐ๊ณผ ๋ฆฌ์์ค๋ฅผ ์บ์์์ ์ฌ์ฉํด๋ ๋๋์ง
- GET, HEAD, POST, PATCH ์บ์ ๊ฐ๋ฅ
- ์ค์ ๋ก GET, HEAD ์ ๋๋ง ์บ์๋ก ์ฌ์ฉ
- POST, PATCH๋ ๋ณธ๋ฌธ ๋ด์ฉ๊น์ง ์บ์ ํค๋ก ๊ณ ๋ คํด์ผ ํ๋๋ฐ, ๊ตฌํ์ด ์ฝ์ง ์์
ํ์ต์ ๋ง์ ๋์์ด ๋ ๋ธ๋ก๊ทธ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ต๋๋ค. ๐
์ฐธ์กฐ ๋ฐ ์ถ์ฒ
https://www.inflearn.com/questions/126743
https://ko.wikipedia.org/wiki/REST
https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE
'๐Web & Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Monolithic Architecture, Micro Service Architecture (0) | 2022.06.27 |
---|---|
RESTful API (0) | 2022.06.15 |
HTTP (0) | 2022.03.27 |
URL ๊ตฌ์กฐ ์ดํดํ๊ธฐ (feat. URI, URN) (0) | 2022.03.19 |
TCP, UDP (0) | 2022.03.05 |