๋ฐฐ์ด ๋ด์ฉ๊ณผ ์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์ต๋๋ค.
HTTP
HTML ๋ฌธ์์ ๊ฐ์ ๋ฆฌ์์ค๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ํด์ฃผ๋ ํ๋กํ ์ฝ
์น์์ ์ด๋ฃจ์ด์ง๋ ๋ชจ๋ ๋ฐ์ดํฐ ๊ตํ์ ๊ธฐ์ด์ด๋ฉฐ, ํด๋ผ์ด์ธํธ-์๋ฒ ํ๋กํ ์ฝ์ด๋ค.
HTTP๋ TCP๊ธฐ๋ฐ ํ๋กํ ์ฝ์ด๊ธฐ ๋๋ฌธ์ ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ค..
๊ฐ๋ตํ TCP ํน์ง
- ์ค๋ฅ ์๋ ๋ฐ์ดํฐ ์ ์ก
- ์์์ ๋ง๋ ์ ๋ฌ(๋ณด๋ธ ์์๋๋ก ๋์ฐฉ)
- ์กฐ๊ฐ๋์ง ์๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ
Method
์๋ฒ์๊ฒ ์ด๋ค ๋์์ด ์ทจํด์ ธ์ผ ํ๋์ง ๋งํด์ฃผ๋ ์ญํ
๋ชจ๋ HTTP ์์ฒญ ๋ฉ์์ง๋ ํ ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง.
- GET: ์๋ฒ์์ ์ด๋ค ๋ฌธ์๋ฅผ ๊ฐ์ ธ์จ๋ค
- POST: ์๋ฒ๊ฐ ์ฒ๋ฆฌํด์ผ ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค.
- PUT: ์๋ฒ๊ฐ ์์ ํด์ผ ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค(์ ์ฒด ์์ )
- PATCH: PUT์ฒ๋ผ ์์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ง๋ง, ์ผ๋ถ๋ง ์์ ํ๋ค
- DELETE: ์๋ฒ์๊ฒ ๋ฆฌ์์ค ์ญ์ ๋ฅผ ์์ฒญํ๋ค
์๋ต ์ํ์ฝ๋
์๋ฒ๊ฐ ๋ฐ์ ์์ฒญ์ ์ฒ๋ฆฌ ์ํ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ ค์ฃผ๋ ๊ฒ
- 1xx : ์ ๋ณด
- 2xx: ์์ฒญ ์ฒ๋ฆฌ ์ฑ๊ณต
- 3xx: ๋ฆฌ๋ค์ด๋ ์
- 4xx: ํด๋ผ์ด์ธํธ ์๋ฌ -> ํด๋ผ์ด์ธํธ ์๋ฌ
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์๋ฒ์์ ๋ค๋ฃฐ ์ ์๋ ๊ฒ์ผ ๋ ๋ฐ์
401(Unauthorized): ๊ถํ ์์(์ธ์ฆ ์คํจ), 403(Forbidden): ์์ฒญ์ด ์๋ฒ์ ์ํด ๊ฑฐ๋ถ๋จ, 404: ๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์ - 5xx: ์๋ฒ ์๋ฌ -> ์๋ฒ์์ ๋ฐ์ํ ์๋ฌ
HTTP ๋ฉ์์ง
์์ฒญ๊ณผ ์๋ต 2๊ฐ์ง๊ฐ ์๋ค.
- ์์์ค: ์ด๋ค ๋ฉ์์ง์ธ์ง ์์ ํ๋ค.
- ํค๋: ์์ฑ์ ๋ด๊ณ ์๋ค.
- ๋ฐ๋: ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, ์์ ์๋ ์๋ค.
HTTP ์ปค๋ฅ์
๋ณดํต ํ๋์ ์นํ์ด์ง์๋ ๋ค์ํ ๋ฆฌ์์ค๊ฐ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ๋ณดํต ์ฌ๋ฌ ๋ฒ์ HTTP ์์ฒญ์ด ํ์ํ๊ฒ ๋๋ค.
TCP ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ธ HTTP๋ ์๋ฒ์ 3-way handshake๋ฅผ ํตํด ์ปค๋ฅ์ ์ ๋งบ๋๋ค.
HTTP/1.0
์ฌ์ง์ ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์ฒ๋ผ ํ๋์ HTTP ํธ๋์ญ์ (์์ฒญ-์๋ต)๋ง๋ค ์ปค๋ฅ์ ์ ๋งบ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๋ ์์๋๋ค.
๋ฐ๋ผ์ connection: keep-alive ์์ฑ์ ํตํด ๊ฐ์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๊ฒฝ์ฐ ์ปค๋ฅ์ ์ ์ ์ง์ํฌ ์ ์๋ค.
HTTP/1.1
ํ์ฌ ์ฐ์ด๋ HTTP ํ์ค
๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ ์ปค๋ฅ์ ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ TCP ํธ๋์์ดํฌ์ ๋๋ ๋น์ฉ์ ์๋ ์ ์๋ค.
1.1์์๋ ์ง์ ์ปค๋ฅ์ ์ ํตํด ์์ฒญ์ ํ์ดํ๋ผ์ด๋ ํ ์ ์๋ค.
์๋ต์ด ๋์ฐฉํ๊ธฐ ์ ์ ์ฌ๋ฌ ๊ฐ์ ์์ฒญ์ ํ์ ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋คํฌ์ํฌ ์๋ณต ์๊ฐ์ ์ค์ฌ์ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค.
๋ค๋ง, HTTP ํ์ดํ๋ผ์ด๋์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด์์ง ์๋ค.
๋ํ POST์ฒ๋ผ ๋ฐ๋ณต์ ์ผ๋ก ์์ฒญ์ ๋ณด๋ผ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ์์ฒญ์ ํ์ดํ๋ผ์ด๋ ํ๋ฉด ์๋๋ค.
HTTP/2.0
ํ์ค์ ์๋์ง๋ง ๋ง์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํ๊ณ ์๋ค.
์ฌ๋ฌ ์์ฒญ๊ณผ ์๋ต์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ด์ง ํ๋ ์๊ณผ ์คํธ๋ฆผ์ ์ง์ํ๋ ์ด์ง ํ๋กํ ์ฝ์ด๋ค.
์ฐ์ ์์ ์ง์
๋ก๋ ํ๋ก์ธ์ค ์ค์ ์ฝํ ์ธ ์ ์ฐ์ ์์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ
์น ์ฑ๋ฅ์ ๋งฅ๋ฝ์์ ์ฐ์ ์์๋ ์ฝํ ์ธ ๊ฐ ๋ก๋๋๋ ์์๋ฅผ ๋ํ๋ ๋๋ค
ํค๋ ์์ถ
ํค๋๋ฅผ ์์ถํ์ฌ ํจ์จ์ ์ผ๋ก ์ ์กํ๋ฉฐ, ํค๋ ํ๋๋ฅผ ์ด์ ๋ฉ์์ง์์ ์ฐธ์กฐํ ์ ์๋๋ก ํ๋ค.
๋ค์คํ(Multiplexing)
๋จ์ผ TCP ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์์ฒญ๊ณผ ์๋ต์ ๋ณ๋ ฌ๋ก ๋ค์คํํ์ฌ ์ ์กํ๋ค.
1.1์ ํ์ดํ๋ผ์ด๋๊ณผ ๋น์ทํด๋ณด์ด์ง๋ง ํจ์ฌ ํจ์จ์ ์ด๋ค.
์๋ฒ ํธ์
HTTP/2๋ ์๋ฒ ํธ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์์ด๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
REST API
REST๋ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๊ท์ ํ ์ํคํ ์ฒ
RESTful = REST์ ๊ธฐ๋ณธ ์์น์ ์ฑ์คํ ์งํจ ์๋น์ค ๋์์ธ!
๊ตฌ์ฑ
REST API๋ ์์, ํ์, ํํ 3๊ฐ์ง ์์๋ก ๊ตฌ์ฑ๋๋ค
๊ตฌ์ฑ ์์ | ๋ด์ฉ | ํํ ๋ฐฉ๋ฒ |
์์ | ์์ | URI(์๋ํฌ์ธํธ) |
ํ์ | ์์์ ๋ํ ํ์ | HTTP ๋ฉ์๋ |
ํํ | ํ์์ ๊ตฌ์ฒด์ ๋ด์ฉ | ํ์ด๋ก๋ |
์ค๊ณ ์์น
1. URI๋ ๋ฆฌ์์ค๋ฅผ ํํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋์ฌ๊ฐ ์๋ ๋ช ์ฌ๋ฅผ ์ฌ์ฉํด์ผ ํจ!
2. ๋ฆฌ์์ค์ ๋ํ ํ์๋ HTTP ๋ฉ์๋๋ฅผ ์ด์ฉํ ๊ฒ
'๐ช๋ฐ๋ธ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[6์ฃผ์ฐจ] ๋ฐ๋ธ์ฝ์ค 6์ฃผ์ฐจ ๋ณต์ต (0) | 2024.04.12 |
---|---|
[2์ฃผ์ฐจ 3์ผ] CSS, JavaScript (0) | 2024.03.09 |
[Week1] Git ๋ช ๋ น์ด (0) | 2024.02.28 |
[Week1] ๋ฆฌ๋ ์ค ๋ช ๋ น์ด (3) | 2024.02.28 |
[Week1] ๋ฒ์ ๊ด๋ฆฌ ์์คํ (0) | 2024.02.28 |