์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
Tags
- ๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ
- ๊ทธ๋ฆฌ๋
- Spring Data JDBC
- ์ฒซ๊ธ์๋๋ฌธ์
- testing
- java
- ๊ณ์ฐ๊ธฐ๋ง๋ค๊ธฐ
- ์ปฌ๋ ์ ํ๋ ์์ํฌ
- ๋ถํธ์บ ํ
- ํ์ดํ๋ก๊ทธ๋๋ฐ
- HTML
- ์๋ฃ๊ตฌ์กฐ
- Spring Security
- ํ๊ณ
- CLI๋ช ๋ น์ด
- fibonacci
- ๋ฌธ์์ด๋ค์ง๊ธฐ
- ์คํ๋ง
- ๊นํ๋ธ
- ์ธํ ๋ฆฌ์ ์ด
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฐ์ผ๋ฆฌ์ฝ๋ฉ
- ์๋ฐ
- FilterChain
- ๊ฑฐ๋ญ์ ๊ณฑ
- CSS
- spring data jpa
- ๋ฐฑ์๋
- Publishing
- ์ ๋ค๋ฆญ์ค
Archives
- Today
- Total
๋์ ๋ชจ์
029 | ๋คํธ์ํฌ - HTTP ๋ณธ๋ฌธ
๐ HTTP(HyperText Transfer Protocol)
- HTML๊ณผ ๊ฐ์ ๋ฌธ์๋ฅผ ์ ์กํ๊ธฐ ์ํ Application Layer ํ๋กํ ์ฝ
- HTTP๋ ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ์ ์ํต์ ์ํด ๋์์ธ๋จ
- ํด๋ผ์ด์ธํธ-์๋ฒ ๋ชจ๋ธ์์
- ํด๋ผ์ด์ธํธ๊ฐ HTTP messages ์์์ ๋ง์ถฐ ์์ฒญ ์ ์ก
- ์๋ฒ๋ HTTP messages ์์์ ๋ง์ถฐ ์๋ต
- HTTP์ ํน์ง: Stateless(๋ฌด์ํ์ฑ)
โ Ref.
- Application Layer Protocol
๐ HTTP Messages
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์์ ๋ฐ์ดํฐ๊ฐ ๊ตํ๋๋ ๋ฐฉ์
- HTTP messages ์ ํ
- ์์ฒญ(Requests)
- ์๋ต(Responses)
- ๊ตฌ์ฑ ํ์ผ, API, ๊ธฐํ ์ธํฐํ์ด์ค์์ HTTP messages๋ฅผ ์๋ ์์ฑ
- ์์ฒญ๊ณผ ์๋ต์ ์ ์ฌํ ๊ตฌ์กฐ
- start line
- ์์ฒญ์ด๋ ์๋ต์ ์ํ๋ฅผ ๋ํ๋ด๋ฉฐ, ํญ์ ์ฒซ ๋ฒ์งธ ์ค์ ์์น
- ์๋ต์์๋ status line์ด๋ผ๊ณ ๋ถ๋ฆ
- HTTP headers
- ์์ฒญ์ ์ง์ ํ๊ฑฐ๋, ๋ฉ์์ง์ ํฌํจ๋ ๋ณธ๋ฌธ์ ์ค๋ช ํ๋ ํค๋์ ์งํฉ
- empty line
- ํค๋์ ๋ณธ๋ฌธ์ ๊ตฌ๋ถํ๋ ๋น ์ค์ด ์์
- body
- ์์ฒญ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ ์๋ต๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ ๋๋ ๋ฌธ์ ํฌํจ
- ์์ฒญ๊ณผ ์๋ต์ ์ ํ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ฌ์ฉ
- start line
- start line + HTTP Headers = head
- payload = body
๐ค ์์ฒญ(Request)
Start line
- HTTP ์์ฒญ: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ณด๋ด๋ ๋ฉ์์ง
- Start line์ ์ธ ๊ฐ์ง ์์
- ์ํํ ์์
(GET, PUT, POST ๋ฑ)์ด๋ ๋ฐฉ์(HEAD or OPTIONS)์ ์ค๋ช
ํ๋ HTTP method
ex. GET method๋ ๋ฆฌ์์ค๋ฅผ ๋ฐ๊ณ , POST method๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์ก - ์์ฒญ ๋์(์ผ๋ฐ์ ์ผ๋ก URL์ด๋ URI) ๋๋ ํ๋กํ ์ฝ, ํฌํธ, ๋๋ฉ์ธ์ ์ ๋ ๊ฒฝ๋ก๋ ์์ฒญ ์ปจํ
์คํธ์ ์์ฑ
์ด ์์ฒญ ํ์์ HTTP method ๋ง๋ค ๋ค๋ฆ
- origin ํ์: ?์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ด ๋ถ๋ ์ ๋ ๊ฒฝ๋ก
POST, GET, HEAD, OPTIONS ๋ฑ์ method์ ํจ๊ป ์ฌ์ฉ POST / HTTP 1.1GET /background.png HTTP/1.0HEAD /test.html?query=alibaba HTTP/1.1OPTIONS /anypage.html HTTP/1.0 - absolute ํ์: ์์ ํ URL ํ์
ํ๋ก์์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ GET method์ ํจ๊ป ์ฌ์ฉ GET <http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages> HTTP/1.1 - authority ํ์: ๋๋ฉ์ธ ์ด๋ฆ๊ณผ ํฌํธ ๋ฒํธ๋ก ์ด๋ฃจ์ด์ง URL์ authority componen
HTTP ํฐ๋์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ CONNECT์ ํจ๊ป ์ฌ์ฉ CONNECT developer.mozilla.org:80 HTTP/1.1 - asterisk ํ์: OPTIONS ์ ํจ๊ป ๋ณํ() ํ๋๋ก ์๋ฒ ์ ์ฒด๋ฅผ ํํ OPTIONS * HTTP/1.1
- origin ํ์: ?์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ด ๋ถ๋ ์ ๋ ๊ฒฝ๋ก
- HTTP ๋ฒ์ ์ ๋ฐ๋ผ HTTP message์ ๊ตฌ์กฐ๊ฐ ๋ฌ๋ผ์ ธ์ start line์ HTTP ๋ฒ์ ์ ํจ๊ป ์ ๋ ฅ
Headers
- ์์ฒญ์ Headers๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
- ํค๋ ์ด๋ฆ(๋์๋ฌธ์ ๊ตฌ๋ถ์ด ์๋ ๋ฌธ์์ด), ์ฝ๋ก ( : ), ๊ฐ์ ์ ๋ ฅํ๋ฉฐ ๊ฐ์ ํค๋์ ๋ฐ๋ผ ๋ค๋ฆ
- ํค๋ ์ข
๋ฅ
- General headers
- ๋ฉ์์ง ์ ์ฒด์ ์ ์ฉ๋๋ ํค๋
- body๋ฅผ ํตํด ์ ์ก๋๋ ๋ฐ์ดํฐ์๋ ๊ด๋ จ์ด ์๋ ํค๋
- Request headers
- fetch๋ฅผ ํตํด ๊ฐ์ ธ์ฌ ๋ฆฌ์์ค๋ ํด๋ผ์ด์ธํธ ์์ฒด์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ํฌํจํ๋ ํค๋
- ์์ฒญ์ ๊ตฌ์ฒดํํ๋ ํค๋: User-Agent, Accept-Type, Accept-Language
- Referer์ฒ๋ผ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๊ฑฐ๋ If-None๊ณผ ๊ฐ์ด ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ์ฝ์ ์ถ๊ฐํ ์ ์์
- Representation headers
- body์ ๋ด๊ธด ๋ฆฌ์์ค ์ ๋ณด(์ฝํ ์ธ ๊ธธ์ด, MIME ํ์ ๋ฑ)๋ฅผ ํฌํจํ๋ ํค๋
- ์ด์ ์๋ Entity headers๋ก ๋ถ๋ ์
- General headers
Body
- ์์ฒญ์ ๋ณธ๋ฌธ์ HTTP messages ๊ตฌ์กฐ ๋ง์ง๋ง์ ์์น
- ๋ชจ๋ ์์ฒญ์ body๊ฐ ํ์ํ ๊ฑด ์๋
- GET, HEAD, DELETE, OPTIONS์ฒ๋ผ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ๊ฒฝ์ฐ์๋ ๋ณธ๋ฌธ ํ์ ์์
- POST๋ PUT๊ณผ ๊ฐ์ ์ผ๋ถ ์์ฒญ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ์ฌ์ฉ
- ์์ฒญ body ์ข
๋ฅ
- Single-resource bodies(๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ): ํค๋ ๋ ๊ฐ(Content-Type๊ณผ Content-Length)๋ก ์ ์๋ ๋จ์ผ ํ์ผ๋ก ๊ตฌ์ฑ
- Multiple-resource bodies(๋ค์ค-๋ฆฌ์์ค ๋ณธ๋ฌธ): ์ฌ๋ฌ ํํธ๋ก ๊ตฌ์ฑ๋ ๋ณธ๋ฌธ์์๋ ๊ฐ ํํธ๋ง๋ค ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์ง๋
๐ค ์๋ต(Responses)
Status line
- Status line: ์๋ต์ ์ฒซ ์ค
- ํ์ฌ ํ๋กํ ์ฝ์ ๋ฒ์ (HTTP/1.1)
- ์ํ ์ฝ๋ - ์์ฒญ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ (200, 302, 404 ๋ฑ)
- ์ํ ํ ์คํธ - ์ํ ์ฝ๋์ ๋ํ ์ค๋ช
- Status line์ HTTP/1.1 404 Not Found. ์ฒ๋ผ ์๊น
Headers
- ์๋ต์ ๋ค์ด๊ฐ๋ HTTP headers๋ ์์ฒญ ํค๋์ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์
- ๋์๋ฌธ์ ๊ตฌ๋ถ ์๋ ๋ฌธ์์ด๊ณผ ์ฝ๋ก (:), ๊ฐ์ ์ ๋ ฅํ๋ฉฐ, ๊ฐ์ ํค๋์ ๋ฐ๋ผ ๋ค๋ฆ
- ํค๋ ์ข
๋ฅ
- General headers
- ๋ฉ์์ง ์ ์ฒด์ ์ ์ฉ๋๋ ํค๋
- body๋ฅผ ํตํด ์ ์ก๋๋ ๋ฐ์ดํฐ์๋ ๊ด๋ จ์ด ์๋ ํค๋
- Response headers
- ์์น ๋๋ ์๋ฒ ์์ฒด์ ๋ํ ์ ๋ณด(์ด๋ฆ, ๋ฒ์ ๋ฑ)์ ๊ฐ์ด ์๋ต์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ๊ฐ๋ ํค๋
- Vary, Accept-Ranges์ ๊ฐ์ด ์ํ ์ค์ ๋ฃ๊ธฐ์๋ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ ์ถ๊ฐ ์ ๋ณด ์ ๊ณต
- Representation headers
- body์ ๋ด๊ธด ๋ฆฌ์์ค ์ ๋ณด(์ฝํ ์ธ ๊ธธ์ด, MIME ํ์ ๋ฑ)๋ฅผ ํฌํจํ๋ ํค๋
- ์ด์ ์๋ Entity headers๋ก ๋ถ๋ ์
- General headers
Body
- ์๋ต์ ๋ณธ๋ฌธ์ HTTP messages ๊ตฌ์กฐ ๋ง์ง๋ง์ ์์น
- ๋ชจ๋ ์๋ต์ body๊ฐ ํ์ํ ๊ฑด ์๋
201, 204์ ๊ฐ์ ์ํ ์ฝ๋๋ฅผ ๊ฐ์ง๋ ์๋ต์๋ ๋ณธ๋ฌธ์ด ํ์ํ์ง ์์ - ์๋ต body ์ข
๋ฅ
- Single-resource bodies(๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ)
- ๊ธธ์ด๊ฐ ์๋ ค์ง ๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ์ ๋ ๊ฐ์ ํค๋(Content-Type, Content-Length)๋ก ์ ์
- ๊ธธ์ด๋ฅผ ๋ชจ๋ฅด๋ ๋จ์ผ ํ์ผ๋ก ๊ตฌ์ฑ๋ ๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ์ Transfer-Encoding์ด chunked ๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ, ํ์ผ์ chunk๋ก ๋๋์ด ์ธ์ฝ๋ฉ๋์ด ์์
- Multiple-resource bodies(๋ค์ค-๋ฆฌ์์ค ๋ณธ๋ฌธ)
- ์๋ก ๋ค๋ฅธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ body
- Single-resource bodies(๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ)
Stateless
- ์ํ๋ฅผ ๊ฐ์ง์ง ์์
- HTTP๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ์ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์์ HTTP๊ฐ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ํ๋ฅผ ํ์ธํ์ง ์์
- ์๋ก, ์ฌ์ฉ์๋ ์ผํ๋ชฐ์ ๋ก๊ทธ์ธํ๊ฑฐ๋ ์ํ์ ํด๋ฆญํด์ ์์ธ ํ๋ฉด์ผ๋ก ์ด๋ํ๊ณ , ์ํ์ ์นดํธ์ ๋ด๊ฑฐ๋ ๋ก๊ทธ์์์ ํ ์๋ ์์ง๋ง ํด๋ผ์ด์ธํธ์์ ๋ฐ์ํ ๋ชจ๋ ์ํ๋ฅผ HTTP ํต์ ์ด ์ถ์ ํ์ง ์์. ๋ง์ฝ ์ผํ๋ชฐ์์ ์นดํธ์ ๋ด๊ธฐ ๋ฒํผ์ ๋๋ ์ ๋, ์นดํธ์ ๋ด๊ธด ์ํ ์ ๋ณด(์ํ)๋ฅผ ์ ์ฅํด๋ฌ์ผ ํ์ง๋ง HTTP๋ ํต์ ๊ท์ฝ์ผ ๋ฟ์ด๋ฏ๋ก ์ํ๋ฅผ ์ ์ฅํ์ง ์์. ๋ฐ๋ผ์, ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ(์ฟ ํค-์ธ์ , API ๋ฑ)์ ํตํด ์ํ๋ฅผ ํ์ธํ ์ ์์.
๐ HTTP Requests
- ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋จํ ์ธํฐํ์ด์ค๋ฅผ ์ดํดํ๋ ๋ฐ ํ์์ ์ธ RESTful APIs๋ ํด๋ผ์ด์ธํธ-์๋ฒ ํ๋ฆ์ ๊ตฌ์ฑํ๋ ๊ตฌ์ฑ์์๋ฅผ ์ดํดํด์ผ ํ๋ค. HTTP๋ pull protocol๋ก ์ค๋ช ํ ์ ์๋๋ฐ, ํต์ ์ ํญ์ HTTP ์์ฒญ์ ์๋ฒ๋ก ๋ณด๋ด๋ ํด๋ผ์ด์ธํธ์์ ์์๋๋ค.
- ์๋ฒ๋ ์๋ต ๋ฉ์์ง๋ก ์๋ตํ๋๋ฐ ์ด ๋ฉ์์ง๋ค์ ํ๋, ์ด๋ฏธ์ง, ๋ฉํฐ๋ฏธ๋์ด ์ฝํ ์ธ ๋ก ํด์ํ ์ ์๋ ํ ์คํธ์ ๋ณธ๋ฌธ์ด๋ค.
- ๋ชจ๋ http ๋ฉ์์ง๋ ๋ฉ์์ง ํค๋์ ์ ํ์ ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ณต๊ฐ์ ์ํด ๋ถ๋ฆฌ๋๋ค.
- http ์์ฒญ์์ ํค๋์ ์ฒซ ๋ฒ์งธ ์ค์ ์์ฒญ ์ค์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, HTTP verb, URI, HTTP version number๊ฐ ํฌํจ๋๋ค.
- ์์ฒญ ํ ๋ค์ ์ ํ์ ์์ฒญ ํค๋๊ฐ ์๋๋ฐ, ์์ฒญ์ ๋ํ ํน์ ์์ฑ์ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๊ณ , ์์ฒญ ํค๋๊ฐ ์ด๋ฆ ๊ฐ ์์ ๋ํ๋๋ค. ์ฌ๋ฌ ๊ฐ์ ์ผํ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
โ Ref.
๐ HTTP Responses
- ์๋ฒ๊ฐ HTTP ์์ฒญ์ ์์ ํ๋ฉด ํด๋ผ์ด์ธํธ์ ์๋ต ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ฉฐ, ์๋ต์ ์์ฒญ๋ ์ ๋ณด๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์์ ๊ฒฝ์ฐ ํด๋น ๋ฉ์์ง๊ฐ ํฌํจ๋ ์ ์๋ค. ์๋ต์ ๋ฉ์์ง ํค๋์ ์ ํ์ ๋ณธ๋ฌธ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ํค๋์ ์ฒซ ๋ฒ์งธ ์ค์ ์ํ ์ค์ด๋ผ๊ณ ํ๋๋ฐ, ์ ํ ์ฌํญ์ธ ์๋ต ํค๋ ๋ค์ ํ์๋๋ค.
- ์ํ ์ค์๋ HTTP ๋ฒ์ , ์ํ ์ฝ๋ ๋ฐ ์ํ ์ฝ๋๋ฅผ ์์ด๋ก ์ค๋ช ํ๋ ์ด์ ๊ตฌ๋ฌธ์ด ํฌํจ๋๋ค.
- ๋ค์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ํ ์ฝ๋์ ์ด์ ๊ตฌ๋ฌธ์ธ๋ฐ,
- ์ ํ์ ์๋ต ํค๋๋ ์์ฒญ ํค๋์ ์ ์ฌํ๊ฒ ์ด๋ฆ ๊ฐ ์์ ํํ๋ฅผ ์ทจํ๋ค.
- ์๋ต ๋ฉ์์ง ๋ณธ๋ฌธ์๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ค.
โ Ref.
'SEB > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
031 | RDBMS, SQL, ACID (0) | 2022.08.04 |
---|---|
030 | REST API (0) | 2022.08.03 |
029 | ๋คํธ์ํฌ - ์น์ ๊ตฌ์ฑํ๋ ๊ธฐ์ (0) | 2022.08.02 |
027 | Permutation & Combination, Greedy Implementation (0) | 2022.07.29 |
026 | Greedy, Brute-Force, Binary Search Algorithm (0) | 2022.07.29 |
Comments