๋ฐฐ๊ฒฝ์ง์
* HTTP: HyperText Transfer Protocol์ ์ฝ์๋ก, ์ธํฐ๋ท์์ ์ ๋ณด๋ฅผ ์ก์์ ํ๋ ํ๋กํ ์ฝ (๊ท์ฝ)์ ๋๋ค. HTML๋ฌธ์ ์ก์์ ์ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
* REST API: Repersentational State Trasfer API์ ์ฝ์๋ก, REST๋ผ๋ ๊ท์น์ ๋ง์ถฐ ๊ฐ๋ฐ ๋ฐ ์ ๊ณต๋๋ API๋ฅผ ๋งํฉ๋๋ค.
* API: Application Programming Interface์ ์ฝ์๋ก, ํน์ ์๋น์ค๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์์ ๋ค์ ์๋น์ค ๋ด๋ถ์ ๊ธฐ๋ฅ๋ค์ ์ ์ดํ ์ ์๋๋ก ๋ง๋ค์ด๋์ ์ธํฐํ์ด์ค๋ฅผ ๋งํฉ๋๋ค.
HTTP Methods
HTTP Methods๋ ์ฝ๊ฒ๋งํด HTTP ํ๋กํ ์ฝ ์์์ ๋ฐ์ดํฐ๊ฐ ์ค๊ฐ๊ธฐ์ํ ๋ฐฉ์์ ๋งํฉ๋๋ค.
HTTP ์์ฒด๋ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์ ์ ์ก๋ฐฉ๋ฒ์ ๋ํ๋ด๋๊ฒ์ด ๋ง์ง๋ง, ๊ฐ์ ํ๋กํ ์ฝ์์ ์กฐ๊ธ ๋ ์ธ๋ถ์ ์ผ๋ก ๋๋์ด์ง ๊ฐ๋ ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
HTTP Methods๋ ์ข ๋ฅ๊ฐ ๊ต์ฅํ ๋ค์ํฉ๋๋ค. ๊ทธ์ค ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒ์
GET
POST
PATCH
PUT
DELETE
์ ๋์ ๋๋ค. ๋๋จธ์ง๋ ๊ต์ฅํ ํน์ํ ์ํฉ์์๋ง ์ฌ์ฉ๋๊ฑฐ๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
+) Methods ๋ณ๋ก ๋๋์ด์ ์ฌ์ฉํ๋ ์ด์
HTTP ์์ฒญ์ด๋ผ ํด์ ๋ค ๊ฐ์ ์์ฒญ์ด ์๋๋๋ค. ๋ชจ๋ ๋นํ๊ธฐ๊ฐ ์ฌ๋๋ง ๋๋ฅด๋ ๊ฒ์ ์๋๋ฏ์ด ๋ง์ด์ฃ . (์ฌ๊ฐ๊ธฐ๊ฐ ์๋ ํ๋ฌผ๊ธฐ์ผ์๋ ์๊ณ ..)
HTTP ์์ฒญ์ ๋ชฉ์ ์ ๋ฐ๋ผ์ ํนํ๋ ์ ์ก์ต์ ์ ์ ๊ณตํ๊ฑฐ๋, ํด๋น ์์ฒญ์ ๋ชฉ์ ์ ๋ฐ๋ฅธ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ํธ๊ฐ์ ๋ช ์๋ฅผ ์ํด ์ฌ์ฉํฉ๋๋ค.
์ฌ์ค Methods๋ฅผ ๋๋๋ ์ด์ ๋ ์ ์์ ๋ชฉ์ ์ด ๊ฐํฉ๋๋ค.
1. GET
ํน์ ์๋ฃ์ ๋ํ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๋ฉ์๋์ ๋๋ค.
์ฝ๊ฒ ๋งํ์๋ฉด, ์ฐ๋ฆฌ๊ฐ ๋ณด๋ ์นํ์ด์ง๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณต๊ฐ๋ ์ ๋ณด๋ค์ ์๋ฒ์์ ๋ฐ์์ฌ ๋ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก url์ ์ ๋ ฅํ๊ณ Enter๋ฅผ ์น๋ฉด GET ๋ฉ์๋๋ก ์๋ฒ์ ์์ฒญ์ ๋ณด๋ ๋๋ค.
+) Parameter Passing
์๋ฃ๋ง ์์ฒญํ๋ ๋ฉ์๋๋ผ๊ณ ํด๋, ์๋ฒ์ ์ ๋ณด์ ๋ฌ์ ํ์ํฉ๋๋ค.
์๋ฅผ๋ค๋ฉด, ์ฌ์ฉ์์ค์ ์ด๋ค ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ฌ์ง, ์๋๋ฉด ๋ฆฌ์คํธ์ ์ฌ๋ฌ ๊ฐ๋ค์ค ์ด๋ค ๊ฐ์ ๊ฐ์ ธ์ฌ์ง ๋ฑ..
์ด๋ฅผ ์ํด ์ฌ์ฉ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด 3๊ฐ์ง ์์ต๋๋ค.
๊ทธ์ค ์ฌ๊ธฐ์์๋ url param๊ณผ query param๋ง ์๋ ค๋๋ฆด๊ฒ๋๋ค. ๋๋จธ์ง ํ๋๋ POST Methods๋ฅผ ์ค๋ช ํ๊ณ ์๋ ค๋๋ฆด๊ฒ์ ;)
1. url param (=path variable)
url์ผ๋ถ๋ฅผ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ ์์น๋ก ์ง์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ๋๋ค.
GET http://test_server.tsv.com/user/:username
์๋ฒ์์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด ์์ url์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, "http://test_server.tsv.com"์๋ฒ๋ ์์ฒญ์ด ๋ค์ด์ฌ ๋ ์ด๋ฐ์์ผ๋ก ๋ฐ์ํ ๊ฒ๋๋ค:
์๋ฒ: "๊ฒฝ๋ก๊ฐ '/user/:username'์ธ 'GET'์์ฒญ์ด ๋ค์ด์ค๋ฉด, 'username'์ DB์์ ์ฐพ์์ ๋ค์ ๋ณด๋ด์ค์ผ์ง "
์ด๋ฐ url์ ์ค์ ์ฌ์ฉ์๊ฐ ๋ณด๋ผ๋๋, ์ฃผ์์ฐฝ์ ๋ณดํต ์ด๋ฐ์์ผ๋ก ์ ๋ ฅํฉ๋๋ค:
http://test_server.tsv.com/user/john
์ด๋ฌ๋ฉด ์๋ฒ์์ "john"์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋์ ์ ๋ณด๋ฅผ ์ฐพ์ ๋ณด๋ด๊ฒ ์ฃ .
๊ทธ๋ผ ์ฌ์ฉ์ ์ ์ฅ์์ ์ ์๋ฆฌ์ ์ด๋ฐ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋ค๊ณ ์ ์ ์์๊น์?
์์ต๋๋ค. ์๋ฒ ๊ฐ๋ฐ์๊ฐ ์์ ๊ฐ์ด ํํํด์ค์ผ ์ ๊ธฐ์ '์ฌ์ฉ์์ด๋ฆ'์ด๋ผ๋ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋๊ฒ์ ์ ์ ์์ต๋๋ค.
2. query param
url ๋ค์ "?"๋ก ๊ตฌ๋ถ์์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ๋๋ค.
GET http://test_server.tsv.com/user/?username=...
์๋ฒ์์ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด ์์ url์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, "http://test_server.tsv.com"์๋ฒ๋ ์์ฒญ์ด ๋ค์ด์ฌ ๋ ์ด๋ฐ์์ผ๋ก ๋ฐ์ํ ๊ฒ๋๋ค:
์๋ฒ: "๊ฒฝ๋ก๊ฐ '/user'์ธ 'GET'์์ฒญ์ด ๋ค์ด์ค๋ฉด, query์ ์๋ 'username'์ DB์์ ์ฐพ์์ ๋ค์ ๋ณด๋ด์ค์ผ์ง "
์ด๋ฐ url์ ์ค์ ์ฌ์ฉ์๊ฐ ๋ณด๋ผ๋๋, ์ฃผ์์ฐฝ์ ๋ณดํต ์ด๋ฐ์์ผ๋ก ์ ๋ ฅํฉ๋๋ค:
http://test_server.tsv.com/user?username=john
์ด๋ฌ๋ฉด ์๋ฒ์์ "john"์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋์ ์ ๋ณด๋ฅผ ์ฐพ์ ๋ณด๋ด๊ฒ ์ฃ .
query์ ๊ฒฝ์ฐ '&'์ ๊ตฌ๋ถ์ ํตํด ์ฌ๋ฌ ๊ฐ์ ํ๋ฒ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
++) Query String๊ณผ Path Variable์ ๊ฐ๊ฐ ์ธ์ ์ฐ๋ฉด ์ข์๊น?
https://velog.io/@jcinsh/Query-string-path-variable
2. POST
์๋ฒ์ ์๋ฃ์ ์์ฑ์ ์์ฒญํ๋ ๋ฉ์๋์ ๋๋ค.์ด๋ค ์ฌ์ดํธ์์ ํ์๊ฐ์ ์ ์ํด ์ ๋ณด๋ค์ ์ ๋ ฅํ๊ณ ๊ฐ์ ๋ฒํผ์ ๋๋ฅด๋ฉด, ๋๋ค์๋ ์ด ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ ๋ ฅ๋ ์ ๋ณด๋ค์ ์ ๋ฌํฉ๋๋ค.
+) body
์์์ ์ค๋ช ํ์ง ์์๋ 3๋ฒ์งธ ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์ ๋๋ค.
POST๋ถํฐ ์๋์ ์์ฑํ๋ ๋ฉ์๋๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ํด body๋ผ๋ ์์ญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ฉด ์๋ฒ์ ์ ์กํ๋ ค๋ ๋ฐ์ดํฐ๋ฅผ url์ ํ์๋์ง ์์ ์ํ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
3. PATCH
์๋ฒ์ ์ ์ฅ๋์ด์๋ ํน์ ์ ๋ณด๋ฅผ ์์ ํ๋ ค๊ณ ํ ๋ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค์ ๋์ค๋ PUT๊ณผ ๋ฌ๋ฆฌ ์์ ํ ๋ฐ์ดํฐ์ ๋ํ ๋ด์ฉ๋ง ๋ณด๋ด๋ฉด ๋ฉ๋๋ค. (๋ฌผ๋ก ์๋ฒ๊ฐ๋ฐ์๊ฐ ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๋ ๋ด๋ถ ์ฝ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ด ๋ด์ฉ์ ์ธ์ ๊น์ง๋ HTTP ํ์ค์ผ๋ก ํ์ ํ์ฌ ์ค๋ช ํฉ๋๋ค.)
4. PUT
์๋ฒ์ ์ ์ฅ๋์ด์๋ ํน์ ์ ๋ณด๋ฅผ ์์ ํ๋ ค๊ณ ํ ๋ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ ๋์ค๋ PATCH๊ณผ ๋ฌ๋ฆฌ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฎ์ด์์๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝํ ๋ฐ์ดํฐ ๋ฟ๋ง ์๋๋ผ ์ ์งํ ๋ฐ์ดํฐ๊น์ง ํจ๊ป ๋ณด๋ด์ผ ํฉ๋๋ค. (๋ฌผ๋ก ์๋ฒ๊ฐ๋ฐ์๊ฐ ์๋ฒ๋ฅผ ๊ฐ๋ฐํ๋ ๋ด๋ถ ์ฝ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ด ๋ด์ฉ์ ์ธ์ ๊น์ง๋ HTTP ํ์ค์ผ๋ก ํ์ ํ์ฌ ์ค๋ช ํฉ๋๋ค.)
5. DELETE
์๋ฒ์ ์ ์ฅ๋์ด์๋ ํน์ ์ ๋ณด๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ ๋ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
'๐จ Dev_BE > ๊ฐ๋ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Server ] CSP (0) | 2021.09.20 |
---|---|
[ Server ] CORS (0) | 2021.09.20 |
[ Server ] Cookie vs Session (+JWT) (0) | 2021.09.11 |