Computer Science/Network
[CS] HTTPμ REST
The Engineer, Lucy
2024. 11. 21. 16:08
HTTP
- μΈν°λ·μμμ λ°μ΄ν°λ₯Ό μ μ‘νκΈ° μν νλ‘ν μ½λ‘, TCP/IP 4κ³μΈ΅μμ μμ© κ³μΈ΅μ μν¨.
- ν΄λΌμ΄μΈνΈμ μλ²κ° ν΅μ νκΈ° μν΄ μ ννλ λ°μ΄ν°μΈ HTTP λ©μμ§λ₯Ό μ£Όκ³ λ°μ.
HTTP νΉμ§
- λΉμ°κ²°μ±(Connectionless)
- ν΄λΌμ΄μΈνΈμμ μμ²μ λ³΄λΈ ν μλ²λ‘λΆν° μλ΅μ λ°μΌλ©΄ μ°κ²°μ λλ κ²
- λΉμ°κ²°μ±μ λΆνΉμ λ€μλ₯Ό λμμΌλ‘ νλ μλΉμ€μ μ 리.
- μλ²μμ μλ΅μ λ°κ³ λμλ μ°κ²°μ μ μ§νλ €λ©΄ κ·Έλ§νΌ μμμ μ¬μ©νκ² λ¨. β‘οΈ λΉμ°κ²°μ±μ μ°κ²°μ μ μ§νμ§ μμμΌλ‘μ¨ μμμ μλ μ μμ.
- μ°κ²°μ μ μ§νμ§ μκΈ° λλ¬Έμ μλ²κ° ν΄λΌμ΄μΈνΈλ₯Ό κΈ°μ΅ν μ μμ.
- λμΌν ν΄λΌμ΄μΈνΈμμ μ°μμ μΌλ‘ μμ²μ΄ μ€λ©΄ μ°κ²°κ³Ό μ°κ²° ν΄μ κ³Όμ μ λ°λ³΅νκ² λμ΄ μμμ λλΉνκ² λ¨.
- λ¨μ μ 보μνκΈ° μν΄ μΌμ μκ° λμ μ°κ²°μ μ μ§ν μ μλλ‘ HTTP Keep Aliveλ₯Ό μ¬μ©ν¨. β‘οΈ λ§μ§λ§ μλ΅ μ΄ν μΌμ μκ° λμ μ°κ²°μ μ μ§ν΄ λμΌν ν΄λΌμ΄μΈνΈλ‘λΆν° μμ²μ΄ μ€λ©΄ μ°κ²° κ³Όμ μλ΅ κ°λ₯.
- 무μν(Stateless)
- μλ²μμ ν΄λΌμ΄μΈνΈμ μνλ₯Ό μ μ₯νμ§ μλ κ²
- ν΄λΌμ΄μΈνΈκ° μ΄μ μ μμ²ν μ¬νμ μλ²μ μ μ₯νμ§ μμ. β‘οΈ ν΄λΌμ΄μΈνΈλ μμ²μ νμν λ°μ΄ν°λ₯Ό λͺ¨λ κ°μ§κ³ μκ±°λ μλ²κ° ν΄λΌμ΄μΈνΈλ‘λΆν° λ°μ μμ² μ¬νμ λͺ¨λ μ μ₯ν΄μΌ ν¨. μ΄ λ°©λ²λ€μ κ°κ°
μΏ ν€(Cookie)
μμΈμ (Session)
μ΄λΌκ³ ν¨. - μλ² νμ₯μ±μ΄ λμ. ν΄λΌμ΄μΈνΈμ μμ²μ μλ΅νλ μλ²κ° λ°λμ΄λ λκΈ° λλ¬Έμ μλ²λ₯Ό κ³μ νμ₯ν΄λ λ¨. β‘οΈ νΉμ μλ²μ λ¬Έμ κ° μ겨 μλ΅νμ§ λͺ»νλ λ¬Έμ μ 보μ κ°λ₯.
HTTPS
- 보μ κ³μΈ΅μΈ SSL/TLSλ₯Ό μ΄μ©ν΄ HTTPμ 보μμ κ°νν μΉ ν΅μ νλ‘ν μ½.
- HTTPλ λ°μ΄ν° μνΈνλ₯Ό κ±°μΉμ§ μκ³ μ μ‘ν΄μ 보μμ μ·¨μ½ν¨. μ΄λ₯Ό 보μν HTTPS λ±μ₯.
SSL
μ λ·μ€μΌμ΄νμμ κ°λ°ν μνΈν νλ‘ν μ½λ‘ λͺ κ°μ§ λ¬Έμ μ μ΄ μλλ°, μ΄λ₯Ό 보μν΄ μλ‘μ΄ μνΈν νλ‘ν μ½μΈ TLS κ°λ°.- λ°μ΄ν°λ₯Ό μ‘μ ν λ μμ© κ³μΈ΅μμ 보μ κ³μΈ΅μ SSL/TLSλ‘ λ°μ΄ν°λ₯Ό 보λ΄λ©΄ λ°μ΄ν°λ₯Ό μνΈνν΄ μ μ‘ κ³μΈ΅μΌλ‘ μ λ¬.
- λ°μ΄ν°λ₯Ό μμ ν λ μ μ‘ κ³μΈ΅μμ λ³΄λΈ λ°μ΄ν°λ₯Ό 보μ κ³μΈ΅μ SSL/TLSμμ λ°μ 볡νΈνν ν μμ© κ³μΈ΅μΌλ‘ 보λ.
REST
- HTTP ν΅μ μ μ½κ² νμ©ν μ μλ λνμ μΈ λ°©λ².
REST(Representational State Transfer)λ?
- HTTP ν΅μ μ νμ©νκΈ° μν΄ κ³ μλ μν€ν μ².
Representational
μ μΈν°λ·μμ μμμ URIλ‘ λνλΌ μ μμμ μλ―Έ.- ν΄λΌμ΄μΈνΈλ URIλ‘ ννλ μμμ HTTP λ©μλλ₯Ό μ΄μ©ν΄ CRUD(Create, Read, Update, Delete) μ°μ° κ°λ₯.
State Transfer
λ μμμ μνλ₯Ό μ£Όκ³ λ°λ κ², μ¦ μμ²λ°μ μμμ μνλ₯Ό μ λ¬νλ κ².- Restλ μμμ λͺ μν΄ μ°μ°μ μννκ³ μνλ₯Ό μ£Όκ³ λ°λ κ².
- REST νΉμ§
- μΌκ΄λ μΈν°νμ΄μ€: μμμ λνλ΄λ URIλ₯Ό HTTP λ©μλλ‘ μ‘°μνλ μΌκ΄λ μΈν°νμ΄μ€λ₯Ό μ¬μ©. HTTPλ₯Ό λ°λ₯΄λ λͺ¨λ νλ«νΌμμ REST μ¬μ© κ°λ₯.
- ν΄λΌμ΄μΈνΈ-μλ² κ΅¬μ‘°: ν΄λΌμ΄μΈνΈμ μλ² κ°μ μμ²-μλ΅μ λ 립μ μΈ κ΅¬μ‘°λ₯Ό κ°μ§. ν΄λΌμ΄μΈνΈλ μλ²μ μμ²μ 보λ΄κ³ μλ΅ λκΈ°. μλ²λ μμμ κ°μ§κ³ μμΌλ©° ν΄λΌμ΄μΈνΈμ μμ²μ μλ΅.
- 무μνμ±: μλ²μμλ ν΄λΌμ΄μΈνΈμ μμ²μ μ μ₯νκ±°λ κ΄λ¦¬νμ§ μμ. μλ²λ ν΄λΌμ΄μΈνΈμ μμ²μ λν μ²λ¦¬μ μλ΅λ§ ν¨. μ¬μ©μ μΈμ¦, λ‘κ·ΈμΈ μ 보 λ±μ ν΄λΌμ΄μΈνΈμμ μ§μ κ΄λ¦¬.
- μΊμ± κ°λ₯: HTTP νμ€μ μ¬μ©νλ―λ‘ ν΄λΌμ΄μΈνΈλ μ΄μ μ μλ²λ‘λΆν° λ°μ μλ΅μ μ μ₯ λ° μ¬μ¬μ©νλ μΊμ± κ°λ₯. μΊμ±μ ν΄λΌμ΄μΈνΈμ λ§μ μμ²μΌλ‘λΆν° μλ² λΆνλ₯Ό μ€μ¬ μ£Όκ³ , ν΄λΌμ΄μΈνΈλ λΉκ΅μ 빨리 μλ΅μ λ°μ μ μκ² ν¨.
- μ체 νν ꡬ쑰: REST APIλ μμ, νμ, ννμΌλ‘ ꡬμ±λμ΄ REST API λ©μμ§λ₯Ό λ³΄κ³ μ΄λ€ μμ²μ νλμ§ μ μ μμ.
- κ³μΈ΅ν ꡬ쑰: REST μλ²λ λ€μ€ κ³μΈ΅μΌλ‘ ꡬμ±λ μ μμ΄μ 보μ, μνΈνμ κ°μ κ³μΈ΅μ μΆκ°ν΄ μλ²μ λν κΈ°λ₯μ μ μ°νκ² νμ₯ κ°λ₯.
- REST νΉμ§κ³Ό ν¨κ» HTTPλ₯Ό κΈ°λ°μΌλ‘ νκΈ° λλ¬Έμ λ³λμ μΈνλΌλ₯Ό ꡬμΆν νμκ° μμ. β‘οΈ HTTP νμ€μ λ°λ₯΄λ©΄ RESTλ₯Ό μ½κ² μ¬μ© κ°λ₯.
- HTTP λ©μλλ₯Ό μ¬μ©ν΄ μμμ λν μ°μ°μ μ²λ¦¬νλ―λ‘ λμμ΄ νμ μ .
β» URI(Uniform Resource Identifier)
: μΈν°λ·μ μλ μμμ λνλ΄λ μ£Όμ. URIλ μΈν°λ·μμ μꡬνλ κΈ°λ³Έ 쑰건μΌλ‘ μΈν°λ· νλ‘ν μ½μ νμ λΆμ΄ λ€λ. URIμ νμ κ°λ
μΌλ‘ URL, URNμ΄ μμ.
β» URL(Uniform Resource Locator)
: μΈν°λ·μμ μμμ μμΉλ₯Ό μ μ μλ κ·μ½. μΉ μ¬μ΄νΈ μ£Όμμ μΈν°λ·μ λͺ¨λ μμμ λνλΌ μ μμ.
β» URN(Uniform Resource Name)
: μμμ μμΉ μ λ³΄κ° μλ μ€μ μμμ νΉμ .
REST API
- RESTλ₯Ό κΈ°λ°μΌλ‘ ν API.
- μμμ μλ³μ URIλ‘ νκ³ , μμμ λν νμ(μ²λ¦¬)λ HTTP λ©μλλ‘ λνλ. μ λ¬λλ λ°μ΄ν°λ JSON λλ XML λ±μΌλ‘ νν.