무μνμ±μ μ μ§νλ μ΄μ : 리μμ€μ λΆλ΄μ μ€μ΄κΈ° μν΄μ,
무μνμ±μμ κ°μ₯ μ€μν λΆλΆμ, μνκ° μλ€λ κ·Έ μ체보λ€λ μνλ₯Ό κΈ°μ΅νμ§ μκΈ° λλ¬Έμ βλͺ¨λ HTTP μμ²μλ μλ²μμ κ·Έ μμ²μ μνν λ νμν μ λ³΄κ° λͺ¨λ λ€μ΄μλ€λ μλ―Έβκ° λκΈ° λλ¬Έμ μ΄ λΆλΆμ΄ μ€μν©λλ€.
http1μ κ°μ₯ ν° λ¬Έμ μ€ νλκ° βλΉλν λ©μΈμ§ ν€λβμ
λλ€. μΉνμ΄μ§λΉ νκ· μμ²μλ μ½ 140κ° μμ²λΉ νκ· ν¬κΈ°λ 460 bytesλ‘ μΉνμ΄μ§λΉ μ 체 μμ² ν¬κΈ°λ μ΄ 63kbμ λ¬ν©λλ€. μ΄ λλ¬Έμ μ΅μ μ νκ²½μμλ μ§μ°μ΄ μΌμ΄λκ³ , μ¬κΈ°μ μ§μ§ λ¬Έμ λ μ€μ λ‘ μ¬λ¬ μμ² μ¬μ΄μλ μλ‘μ΄ λ°μ΄ν°κ° κ±°μ μλ€λ μ μ
λλ€.
λ°λΌμ h2μμλ ν€λμμΆ λ° ν€λμ΄λ ₯ μ μ₯ λ± μ¬λ¬κ°μ§ λ°©μμΌλ‘ ν΄κ²°νμμ΅λλ€,
HTTP PATCH PUT μ°¨μ΄
λͺ¨λ UPDATEμ΄μ§λ§,
PUTμ μ 체 μμ ,
PATCHλ λΆλΆ μμ μ μ°¨μ΄λ₯Ό 보μΈλ€.
Β
Β
WEBμ μμ¬λ 1991λ
λΆν° μμλμκ³ , μ²μμλ κ°λ¨ν μΈν°λ·μμ μ¬λλ€κ³Ό μ 보곡μ λ₯Ό μν΄ νμλμλ€. (νν νμμ HTML)
HTTP / 1.0 λ‘μ΄νλ© (1994~1998)
λ©μΆ€μμ΄ μ΄λ»κ² HTTPλ₯Ό κ°μ ν μ§? κ³ λ―Όνλ©΄μ νμνκ² REST APIμ΄λ€.
(1998λ
μ 1μ°¨ 2000λ
μ 2μ°¨)
XML-RPC(1998) -> REST APIμ 첫 λμ
κ³Ό κ°μν΄ μμλ "SOAP"λΌλ μ΄λ¦μ λ λ€λ₯Έ APIκ° μλ€.
Salesforceμ APIκ° μ΅μ΄μ μμ©νλ APIμ΄λ€. (2000.2μ) κ·Έλ¬λ, 볡μ‘νλ€. κ·Έ μ΄ν flickr APIκ° λμλ€.
SOAP APIμ νΉμ§μ 볡μ‘νλ€
REST APIμ νΉμ§μ μ§§κ³ λ¨μνμ¬ μΈκΈ°κ° λμλ€.
MicroSoft μ REST Guideline
- URI -> HTTPS {service Root} / {collection} / {id}
- GET , PUT, DELETE, POST , HEAD, PATCH, OPTIONS μ§μν΄μΌ νλ€.
- API λ²μ λμ Major, Minorλ‘ νκ³ URIμ λ²μ μ 보λ₯Ό ν¬ν¨νλ€.
RESTμ νΉμ§
- Client-Server
- Stateless
- cache
- uniform - interface **uniform-interface μ μ½μ‘°κ±΄
- identification of resources
- manipulation of resources through representation
- self-descriptive messages : λ©μμ§ μ€μ€λ‘ μ€λͺ
- hypermedia as the engine of application state(HATEOAS) {3,4λ²μ μ μ§μΌμ§μ§ μλλ€.} μ uniform - interface ? -> λ 립μ μ§ν === μλ²μ κΈ°λ₯μ΄ λ³κ²½λμ΄λ ν΄λΌμ΄μΈνΈ μ λ°μ΄νΈλ₯Ό ν νμκ° μλ€.
- layered system
- code-on-demand
μ ν리μΌμ΄μ μνμ μ μ΄
HTTP 1.1
- Persistant connection
- pipelining
- Head of line blocking
- header μ€λ³΅
HTTP 2.0
- HTTP λ©μμ§ μ μ‘ λ°©μμ λ³ν
- λ°μ΄λ리 νλ μ΄λ° κ³μΈ΅ μ¬μ©
- νμ± μ μ‘μλ λΉ¨λΌμ‘κ³ , μ€λ₯ λ°μ κ°λ₯μ±μ΄ λ¨μ΄μ‘λ€.
Multiplexing -> Head of line blocking ν΄κ²°
- Stream Prioritization -> 리μμ€κ° μ°μ μμλ₯Ό μ€μ κ°λ₯
- Server push -> λΌμμλ νμΌμ 미리 μλ²μΈ‘μμ 보λΈλ€.
- Header Compression -> ν€λ ν¬κΈ°λ₯Ό μ€μ¬ νμ΄μ§ λ‘λ μκ° κ°μ. (Static dynamic table)
QUIC -> UDPκΈ°λ°, ꡬκΈ
- μ μ‘μλ ν₯μ -> 첫 μ°κ²° μ€μ μμ νμν μ 보μ ν¨κ» λ°μ΄ν° μ μ‘ μ°κ²° μ±κ³΅ μ μ€μ μ μΊμ±νμ¬, λ€μ μ°κ²° λ λ°λ‘ μ±λ¦½ κ°λ₯.
- 컀λ₯μ UUID λΌλ κ³ μ ν μλ³μλ‘ μλ²μ μ°κ²° -> 컀λ₯μ μ¬μ립 νμ μμ.
- 보μ : TLS κΈ°λ³Έ μ μ©, IP spoofing / replay attack λ°©μ§ -> 보μμ± ν₯μ
- λ 립 μ€νΈλ¦Ό -> ν₯μλ λ©ν°νλ μ± κ°λ₯
- ν΅μ μ¨μ ꡬκΈμ λ‘λ© νκ· 3%κ°μ / μ νλΈ λ²νΌλ§ 30% κ°μ
HTTP 3.0 μΆμ λ¨
μΉ μμ² / μλ΅.
μΉμ μΈν°λ·μ΄ μλλ€.
LAN(Local Area Network)
: 근거리 ν΅μ λ§ -> κ°κΉμ΄ μ§μμ νλ° λ¬Άμ μ»΄ν¨ν° λ€νΈμν¬
(MAN, WAN... λ±)
μΈν°λ·: μ»΄ν¨ν° λ€νΈμν¬λ₯Ό μλ‘ μ°κ²° μ§μ΄μ£Όλ λ²μ§κ΅¬μ λ€νΈμν¬.
μΉμ λͺ©μ : hypertext
μΉμ μ°½μμ : ν λ²λμ€λ¦¬.
μΉμ μ‘΄μ¬ μ΄μ : μ 보(μμ)μ 곡μ -> μΉμ μλ§μ μμ²κ³Ό μλ΅ μ¬μ΄ν΄μ μ°μμΌλ‘ μ΄λ£¨μ΄ μ Έμλ€.
μλ²μ ν΄λΌμ΄μΈνΈ
μλ²: μ 보, μμ, μλΉμ€ μ 곡. ν΄λΌμ΄μΈνΈμκ² μμ²λ°μ μλ΅νλ μΈ‘
ν΄λΌμ΄μΈνΈ : μ 보, μμ, μλΉμ€ μ¬μ©. μλ²μκ² μμ² νλ μΈ‘.
HTTP: μΉ μμ²κ³Ό μλ΅μ κ΄ν ν΄λΌμ΄μΈνΈμ μλ² μ¬μ΄μ κ·μ½(μ½μ) (Hyper Text Transfer Protocol)
- λΉμ°κ²°μ± : μλ² μλ΅μ λ§μΉλ©΄ μ°κ²°μ λμ΄λ²λ¦°λ€. λ€μ μμ²μ μλ‘μ΄ μ°κ²°μ ν΅ν΄ μ΄λ£¨μ΄μ§λ€.
λ¨μ : λ€νΈμν¬ λΉμ© μΈ‘λ©΄μμ λΉν¨μ¨μ
보μ: HTTP 1.1 / Keep - alive
HTTP νΉμ±
- 무μν : νλμ μμ²μ΄ μ§νλλ λμλ§ μλ‘λ₯Ό μΈμ§ λ¨μ : ν΄λΌμ΄μΈνΈ μΈμ¦(λ‘κ·ΈμΈ)μ΄ νμν μλΉμ€μμ λΆνΈν¨. 보μ: 1. μΏ ν€, μΈμ , ν ν°(Oauth, JWT) - μνλ₯Ό κΈ°μ΅νκΈ° μν κΈ°λ₯λ€.
HTTP Status Code(μλ΅ μ½λ, μν μ½λ)
1xx(μ 보)
2xx(μ±κ³΅)
3xx(리λ€μ΄λ μ
)
4xx(ν΄λΌμ΄μΈνΈμλ¬)
5xx(μλ²μλ¬)
HTTP Methods
GET : READ (μλ²μ 리μμ€ μ‘°νν λ)
POST : CREATE (μλ²μ 리μμ€ μμ± ν λ)
PUT : UPDATE (μλ²μ 리μμ€ μμ ν λ)
DELETE : DELETE (μλ²μ 리μμ€ μμ ν λ)
HEAD: BODYλΉΌκ³ HEADλ‘ μλ΅ -> (리μμ€ νμΈμ©λ)
PATCH : 리μμ€ λΆλΆλ§ μμ ν λ
OPTIONS : μ§μ κ°λ₯ λ©μλ μ’
λ₯ μμλ³Όλ (CORS)
TRACE : 리μμ€ κ²½λ‘λ₯Ό λ°λΌ λ©μμ§ pop-back ν
μ€νΈ μ€ν
CONNECT : 리μμ€λ‘ μλ³λλ μλ²λ‘μ ν°λμ λ§Ίμ λ,
DNS
Domain Name System
Same Origin-Policy: λΈλΌμ°μ κΈ°λ³Έ μ€μ μ νλμ μλ²λ§μ μ°κ²°νλ€.
- μμ²λ©μλ μ 리
- λΌμ°ν° μ μ
- μμ²λ°μ΄ν° λ°κΈ°
- λμꡬν
- λ°μ΄ν° μν μλ΅.