2021.05.03 - [BASIC] - 01. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ์ธํฐ๋ท ๋คํธ์ํฌ
2021.05.03 - [BASIC] - 02. HTTP ์น ๊ธฐ๋ณธ ์ง์ - URI
2021.05.03 - [BASIC] - 03. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ๋ชจ๋ ๊ฒ์ด HTTP
API URI ๊ณ ๋ฏผ
๋ฆฌ์์ค๋ผ๋ ์๋ฏธ๋ ๋ญ๊น?
ํ์์ ๋ฑ๋กํ๊ณ ์์ ,์กฐํ ํ๋๊ฒ ๋ฆฌ์์ค๋ ์๋๋ค
ํ์์ด๋ผ๋ ๊ฐ๋ ์์ฒด๊ฐ ๋ฐ๋ก ๋ฆฌ์์ค์ด๋ค. ๋๋ DB์ ์ ์ฅ๋์ด์๋ ํ ๋ก์ฐ์ ๋ฐ์ดํฐ๋ผ๊ณ ์ดํดํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ์๋ณํ๋๊ฒ ์ข์๊น?
์์ ,์กฐํ ํ๋ ๊ฒ์ ๋ชจ๋ ๋ฐฐ์ ํ๊ณ ํ์์ด๋ผ๋ ๋ฆฌ์์ค๋ง ์๋ณํ๋ค.
-> ํ์ ๋ฆฌ์์ค๋ฅผ URI ๋งคํ
API URI ์ค๊ณ
- ๋ฆฌ์์ค๋ง์ ์๋ณํ๊ธฐ ๋๋ฌธ์ URI ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ค.
- ๋ฆฌ์์ค์ํด๋น ๋ฆฌ์์ค๋ฅผ ๋์์ผ๋ก ํ๋ ํ์๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ์ฌ๊ธฐ์ ๋ฆฌ์์ค(๋ช ์ฌ)๋ ํ์์ ๋ปํ๊ณ
- ํ์(๋์ฌ)๋ ์กฐํ, ๋ฑ๋ก, ์ญ์ , ๋ณ๊ฒฝ์ ๋ปํ๋ค.
์)
ํ์ ๋ชฉ๋ก ์กฐํ /members
ํด๋น ํ์ ์กฐํ /members/{id}
ํ์ ๋ฑ๋ก /members/{id}
ํ์ ์์ /members/{id}
ํ์ ์ญ์ /members/{id}
HTTP ๋ฉ์๋ ์ข ๋ฅ
GET ๋ฆฌ์์ค ์กฐํ
์๋ฒ์ ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ฅผ query๋ฅผ ํตํด ์ ๋ฌํ๋ค.
๋ฉ์์ง body๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ง๋ง, ์ง์ํ์ง ์๋ ๊ณณ์ด ๋ง๋ค.
POST ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฑ๋ก์ ์ฌ์ฉ
๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
์๋ฒ๋ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค. ์ฃผ๋ก ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ท ๋ฆฌ์์ค ๋ฑ๋ก, ํ๋ก์ธ์ค ์ฒ๋ฆฌ์ ์ฌ์ฉํ๋ค.
201 Created๋ฅผ ๋ณด๋ด๋ฉด์ (200 Ok ๋ ๋ฌด๊ด) ์์์ด ์์ฑ๋ URI๋ฅผ return ํด์ค๋ค. -> ๋์ค์ ํ๋ก์ ํธํ ๋ ํ์ธํด๋ด๋ ์ข์๊ฒ ๊ฐ๋ค
PUT ๋ฆฌ์์ค๋ฅผ ๋์ฒด, ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ
๋ฆฌ์์ค๋ฅผ ์์ ํ ๋์ฒดํ๋ค.
๋ฆฌ์์ค๊ฐ == null ? ์์ฑ : ๋์ฒด
๋ง์ฝ ๊ฐ์ด ๊ฐ์๋ ํ๋ ๊ฐฏ์๊ฐ ๋ค๋ฅด๋ค๋ฉด ์์ฒญํ๋ ๊ฐ ๊ทธ๋๋ก ๋ฎ์ด์ฐ๊ธฐํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ๊ตฌ์ฒด์ ์ธ ๋ฆฌ์์ค ์์น๋ฅผ ์๊ณ ์ง์ ํ๋ค.
PATCH ๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ
๊ทธ๋ ๋ค๋ฉด ํ์ ์์ ์ผ ๋ PATCH๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋ง์๊น? ์ฌํ PUT์ผ๋ก ์๊ณ ์์๋ค.
PUT์ด ํด๋น ์์์ ์ ์ฒด๋ฅผ ๊ต์ฒดํ๋ ์๋ฏธ๋ฅผ ์ง๋๋ ๋์ , PATCH๋ ์ผ๋ถ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ ์๋ฏธ๋ฅผ ์ง๋๊ธฐ ๋๋ฌธ์ ์ต๊ทผ update ์ด๋ฒคํธ์์ PUT๋ณด๋ค ๋ ์๋ฏธ์ ์ผ๋ก ์ ํฉํ๋ค๊ณ ํ๊ฐ๋ฐ๊ณ ์๋ค. ๋ํ PUT์ ๊ฒฝ์ฐ๋ ๋ฉฑ๋ฑํ์ง๋ง, PATCH์ ๊ฒฝ์ฐ๋ ๋ฉฑ๋ฑํ์ง ์๋ค. PUT์ ์ ์ฒด ์์์ ์
๋ฐ์ดํธ ํ๊ธฐ ๋๋ฌธ์ ๋์ผ ์์์ ๋ํด์ ๋์ผํ๊ฒ PUT์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ ๋ฉฑ๋ฑํ๊ฒ ์ฒ๋ฆฌ๋๋ค. ๋ฐ๋ฉด PATCH๋ก ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ ์์์ ์ผ๋ถ๊ฐ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ๋ฉฑ๋ฑ์ฑ์ ๋ณด์ฅํ ์ ์๋ค.
์ถ์ฒ: https://javaplant.tistory.com/18 [์๋ฐ๊ณต์์]
DELETE ๋ฆฌ์์ค ์ญ์
HEAD GET๊ณผ ๋์ผํ์ง๋ง ๋ฉ์์ง ๋ถ๋ถ์ ์ ์ธํ๊ณ , ์ํ ์ค๊ณผ ํค๋๋ง ๋ฐํ
OPTIONS ๋์ ๋ฆฌ์์ค์ ๋ํ ํต์ ๊ฐ๋ฅ ์ต์ (๋ฉ์๋)์ ์ค๋ช (CORS ์์ ์ฌ์ฉ)
CORS (Cross-Origin Resource Sharing)์ด ๋ญ์ง?
์์ ์์ฒญ ์ถ์ฒ๋ฅผ ํ์ธํ๋ ๊ฑด๋ฐ ์์ธํ ๋ด์ฉ์ ์๋ ๋ธ๋ก๊ทธ์ ์์ฒญ ์์ธํ๊ฒ ๋์์๋ค!
evan-moon.github.io/2020/05/21/about-cors/
CONNECT ๋์ ์์์ผ๋ก ์๋ณ๋๋ ์๋ฒ์ ๋ํ ํฐ๋์ ์ค์
TRACE ๋์ ๋ฆฌ์์ค์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ์ํ(๊ฑฐ์ ์ฌ์ฉํ์ง ์์)
HTTP ๋ฉ์๋์ ์์ฑ
- ์์ (Safe Method)
ํธ์ถํด๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- ๋ฉฑ๋ฑ(Idempotent)
ํ ๋ฒ ํธ์ถํ๋ ๋ ๋ฒ ํธ์ถํ๋ 100๋ฒ ํธ์ถํ๋ ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ๋ค.
GET : ๋ช๋ฒ ์กฐํํ๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์กฐํ๋๋ค.
PUT : ๊ฒฐ๊ณผ๋ฅผ ๋์ฒผํ๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ๋ฒ ํด๋ ์ต์ข ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
DELETE : ๊ฒฐ๊ณผ๋ฅผ ์ญ์ ํ๋ค. ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ๋ฒ ํด๋ ์ญ์ ๋ ๊ฒฐ๊ณผ๋ ๋๊ฐ๋ค.
POST : ๋ฉฑ๋ฑ์ด ์๋๋ค. ๋๋ฒ ํธ์ถํ๋ฉด ๊ฐ์ ๊ฒฐ์ ๊ฐ ์ค๋ณตํด์ ๋ฐ์ํ ์ ์๋ค.
๋ฉฑ๋ฑ์ ํ์ฉ : ์๋ ๋ณต๊ตฌ ๋ฉ์ปค๋์ฆ -> ๋ฉฑ๋ฑ์ด ๊ฐ๋ฅํ METHOD์์ ์๋ฌ๊ฐ ์๊ฒผ์ ๋ ์๋์ผ๋ก ์ฌ์์ฒญํ ์ ์๋ค.
- ์บ์๊ฐ๋ฅ(Cashable)
์ด๋ฏธ ๋ฐ์ ํ์ผ์ ๋ค์ ๋ฐ์ง ์๋๋ก localPC ์น๋ธ๋ผ์ฐ์ ๋ด๋ถ์ ์ ์ฅํ๋ค.(์บ์ ํ๋ค.)
GET, HEAD ,POST, PATCH๊ฐ ์บ์ ๊ฐ๋ฅํ๋ค.
์ค๋ฌด์์๋ GET,HEAD ์ ๋๋ง ์บ์๋ก ์ฌ์ฉํ๋ค. POST, PATCH๋ ๋ณธ๋ฌธ ๋ด์ฉ๊น์ง ์บ์ ํค ๋ก ๊ณ ๋ คํด์ผ ํ๋๋ฐ ๊ตฌํ์ด ์ฝ์ง ์๋ค.
'๐ป Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
06. HTTP ์น ๊ธฐ๋ณธ ์ง์ - HTTP ์ํ์ฝ๋ ์๊ฐ (0) | 2021.05.04 |
---|---|
05. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก (0) | 2021.05.04 |
03. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ๋ชจ๋ ๊ฒ์ด HTTP (0) | 2021.05.03 |
02. HTTP ์น ๊ธฐ๋ณธ ์ง์ - URI (0) | 2021.05.03 |
01. HTTP ์น ๊ธฐ๋ณธ ์ง์ - ์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2021.05.03 |