-
[๊ฐ์] ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ 2SPRING/INFLEARN 2021. 7. 28. 23:58
ํธ๋ค๋ฅ ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ - ์ธํ๋ฐ | ๊ฐ์
์ค๋ฌด์ ๊ผญ ํ์ํ HTTP ํต์ฌ ๊ธฐ๋ฅ๊ณผ ์ฌ๋ฐ๋ฅธ HTTP API ์ค๊ณ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค., ์น ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ OK!๊ผญ ํ์ํ HTTP์ ํต์ฌ์ ์๋ ค๋๋ฆฝ๋๋ค. ๐ฃ ํ์ธํด์ฃผ์ธ์!๋ณธ ๊ฐ์๋ ์๋ฐ ์ค
www.inflearn.com
3. HTTP ๊ธฐ๋ณธ
- ๋ชจ๋ ๊ฒ์ด HTTP
HTTP ๋ฉ์ธ์ง๋ก ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ์ ์กํ ์ ์๋ค.
ํ์ฌ ์ฃผ๋ก ์ฌ์ฉํ๋๊ฑด HTTP/1.1 TCP๊ธฐ๋ฐ์ด๋ค. 2, 3๋ ์ฆ๊ฐํ๋ ์ถ์ธ๊ธด ํจ
HTTPํน์ง
ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
๋ฌด์ํ ํ๋กํ ์ฝ(์คํ ์ด์ค ๋ฆฌ์ค), ๋น์ฐ๊ฒฐ์ฑ
HTTP ๋ฉ์์ง
๋จ์ํจ, ํ ๋น ๊ฐ๋ฅ
- ํด๋ผ์ด์ธํธ ์๋ฒ ๊ตฌ์กฐ
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต์ ๋๊ธฐํ๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๋น์ฆ๋์ค ๋ก์ง, ๋ฐ์ดํฐ๋ ์๋ฒ
UI, ์ฌ์ฉ์ฑ ํด๋ผ์ด์ธํธ
๋ถ๋ฆฌํ๋ฉด ์์ชฝ์ด ๋ ๋ฆฝ์ ์ผ๋ก ์งํํ ์ ์๋ค.
- Stateful, Stateless
Stateful : ์ํ ์ ์ง
Stateless : ๋ฌด์ํ - ๋ฐฉ๊ธ ํ ๋ง ๊ธฐ์ตํ์ง ๋ชปํ๋ ์ฌ๋๊ณผ ๋ํ ๋ฌธ๋งฅ x
ํ์ง๋ง! ์ ์ ๋ณด๋ฅผ ๊ณ์ ์๋ ค์ฃผ๋ฉด์ ๋ํํ๋ค.
=> ์๋ต ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.
๋ฌดํํ ์๋ฒ ์ฆ์ค ๊ฐ๋ฅ(Scale out), ์ค๊ฐ์ ์๋ฒ๊ฐ ๊บผ์ ธ๋ ๋ค๋ฅธ ์๋ฒ์ ํธ์ถ ๊ฐ๋ฅ
๋ฐ๋ผ์, ์ต๋ํ ๋ฌด์ํ๋ฅผ ์ฌ์ฉํ๋ค.
์ํ ์ ์ง๋ฅผ ์ฌ์ฉํด์ผ๋ง ํ๋ ๊ฒฝ์ฐ(๋ก๊ทธ์ธ ๋ฑ) ์ ์ธ
๋จ์ : ๋ฐ์ดํฐ ์์ด ์ข ๋ง๋ค.
- ๋น ์ฐ๊ฒฐ์ฑ(connectionless)
ํ์ํ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด ์ฐ๊ฒฐ ๋์ด๋ฒ๋ฆผ
์์ฒ๋ช ์ด ์ฌ์ฉํด๋ ์ค์ ์๋ฒ์์ ๋์์ ์ฒ๋ฆฌํ๋ ์์ฒญ์ ์์ญ๊ฒ ์ดํ๋ก ๋งค์ฐ ์ ์
->ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง,
TCP/IP์ฐ๊ฒฐ์ ๋งค๋ฒ ์๋ก ๋งบ์ด์ผํจ - 3 way handshake ์๊ฐ ์ถ๊ฐ
์น ๋ธ๋ผ์ฐ์ ๋ก ์ฌ์ดํธ๋ฅผ ์์ฒญํ๋ฉด ์๋ง์ ์์์ ๋งค๋ฒ ๋ค์ด๋ก๋ ํด์ผ ๋๋ค
->๊ทน๋ณต : HTTP ์ง์ ์ฐ๊ฒฐ
์ ๋ง ๊ฐ์ ์๊ฐ์ ๋ฑ ๋ง์ถ์ด ๋ฐ์ํ๋ ๋์ฉ๋ ํธ๋ํฝ ๊ฒฝ์ฐ์๋ ์๋ฏธ๊ฐ ์๋ค
-> stateless๋ฅผ ๊ธฐ์ตํ์
- HTTP ๋ฉ์์ง
start-line(์์ ๋ผ์ธ)
start-line = request-line/ status-line
HTTP ์์ฒญ ๋ฉ์์ง
request-line = [HTTP๋ฉ์๋] [/ ์์ฒญ ๋์(์ ๋๊ฒฝ๋ก)] [HTTP ๋ฒ์ ]
HTTP ์๋ต ๋ฉ์์ง
status-line = [HTTP ๋ฒ์ ] [์ํ ์ฝ๋] [reason-pharse(์ํ ์ฝ๋๋ฅผ ๋ํ๋ด๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๊ธ)]
์ํ ์ฝ๋ - 200 ์ฑ๊ณต 400 ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ 500 ์๋ฒ ๋ด๋ถ ์ค๋ฅ
header(HTTP ํค๋)
header-field = [ํ๋ ์ด๋ฆ(๋์๋ฌธ์ ๊ตฌ๋ถ x):] (OWS)[ํ๋๊ฐ](OWS)
ํ๋ ์ด๋ฆ๊ณผ :๋ ๊ผญ ๋ถ์ด์ผ ํจ ๋๋จธ์ง๋ ๋์ด์ฐ๊ธฐ ์๊ด x
HTTP ์ ์ก์ ์น ์ํ ๋ชจ๋ ๋ถ๊ฐ ์ ๋ณด
message body(HTTP ๋ฉ์์ง ๋ฐ๋)
์ค์ ์ ์กํ ๋ฐ์ดํฐ
HTTP๋ ๋จ์ํ๊ณ ํ์ฅ์ด ๊ฐ๋ฅํ๋ค
2. HTTP ๋ฉ์๋
- HTTP API๋ฅผ ๋ง๋ค์ด๋ณด์
URI์ ๊ฐ์ฅ ์ค์ํ ๊ฒ - ๋ฆฌ์์ค ์๋ณ
๋ฆฌ์์ค์ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋์์ผ๋ก ํ๋ ํ์(๋ฉ์๋)๋ฅผ ๋ถ๋ฆฌํ๋ค.
ex) ๋ฆฌ์์ค : ํ์ , ๋ฉ์๋ : ์กฐํ, ์์ ...
- HTTP ๋ฉ์๋ - GET, POST
<์ฃผ์ ๋ฉ์๋>
GET : ๋ฆฌ์์ค ์กฐํ
POST : ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฑ๋ก์ ์ฌ์ฉ
PUT : ๋ฆฌ์์ค๋ฅผ ๋์ฒด, ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ
PATCH : ๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ
DELETE : ๋ฆฌ์์ค ์ญ์
GET
๋ฆฌ์์ค ์กฐํ
์๋ฒ์ ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ query๋ก ์ ๋ฌ.
POST
์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญ ๋ฐ์ดํฐ ์ ๋ฌ->์๋ฒ๋ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
1. ์ ๋ฆฌ์์ค ์์ฑ ์ ๊ท ๋ฆฌ์์ค ๋ฑ๋ก
2. ํ๋ก์ธ์ค ์ฒ๋ฆฌ์ ์ฌ์ฉ ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
3. ๋ค๋ฅธ ๋ฉ์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ์ ๋งคํ ๊ฒฝ์ฐ
ex)๊ฒ์ํ ๊ธ์ฐ๊ธฐ, ํผ ์ ๋ ฅ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ ๊ท ์ฃผ๋ฌธ ์์ฑ, ๊ธฐ์กด ์์์ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฑ
- HTTP ๋ฉ์๋ - PUT, PATCH, DELETE
PUT
๋ฆฌ์์ค๋ฅผ ๋์ฒด
๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ๋์ฒด/ ์์ผ๋ฉด ์์ฑ => ์์ ํ ๋์ฒด, ๋ฎ์ด๋ฒ๋ฆผ
ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ค๋ ์ ์ด ๊ฐ์ฅ ํฐ ์ฐจ์ด
PATCH
๋ฆฌ์์ค ๋ถ๋ถ๋ณ๊ฒฝ
์ง์์ด ์๋๋ ์๋ฒ๊ฐ ์๊ธฐ๋ ํ๋ค. POST๋ฅผ ์ฌ์ฉ
DELETE
๋ฆฌ์์ค์ ๊ฑฐ
- HTTP ๋ฉ์๋์ ์์ฑ
1) ์์
GET - ์กฐํ๋ง ํ๋ฏ๋ก ์์ ํ๋ค
(์ฆ์ ํธ์ถ๋ก ๋ก๊ทธ๊ฐ ์์ฌ ์ฅ์ ๊ฐ ๋๋ค๋ ๊ณ ๋ คํ์ง ์์)
ํ์ง๋ง ํธ์ถ ์ ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ PUT, POST, DELETE๋ฑ์ ์์ ํ์ง ์๋ค.
2) ๋ฉฑ๋ฑ
ํ ๋ฒ ํธ์ถํ๋ 100๋ฒ ํธ์ถํ๋ ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ๋ค.
POST - ์ค๋ณต์ด ๋ฐ์ํ ์ ์๋ค. ๋ฉฑ๋ฑ x
GET, PUT, DELETE ๋ฑ์ ๋ฉฑ๋ฑ์ด๋ค. (๋ค๋ฅธ ์ฌ์ฉ์์ POST๋ก ์ธํ ์ค๋ฅ๋ ์๊ฐํ์ง ์๋๋ค.)
์๋ ๋ณต๊ตฌ ๋ฉ์ปค๋์ฆ์ ํ์ํ ๊ฐ๋
์๋ชป๋ ๊ฒ ๊ฐ์ ๋, ๋๊ฐ์ ์์ฒญ์ ๋ค์ ํด๋ ๋๋๊ฐ?
3) ์บ์ ๊ฐ๋ฅ
์๋ต ๊ฒฐ๊ณผ ๋ฆฌ์์ค๋ฅผ ์บ์ํด์ ์ฌ์ฉํด๋ ๋๋๊ฐ?
GET, HEAD ์บ์ ๊ฐ๋ฅ POST, PATCH ๊ฐ๋ฅํ๊ธฐ๋ ํ๋ ์ค๋ฌด์์ ์ฌ์ฉํ์ง ์์
์บ์๋ฅผ ํ๋ ค๋ฉด ์บ์ ํค๋ฅผ ๊ณ ๋ คํด์ผ ํ๋๋ฐ ๊ตฌํ์ด ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
'SPRING > INFLEARN' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐ์] ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ 4 (0) 2021.08.11 [๊ฐ์] ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ 3 (0) 2021.08.04 [๊ฐ์] ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ 1 (0) 2021.07.21 [๊ฐ์] ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ 4 (0) 2021.05.25 [๊ฐ์] ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ 3 (0) 2021.05.16