μΉμ 2. μ€νλ§ ν΅μ¬ μ리 μ΄ν΄1 - μμ λ§λ€κΈ° μκ° μλ£!!
λκ°... μλ²½νκ² μ΄ν΄λ μ λλλ° κ·Έλμ κ°μ²΄ μ§ν₯μ μν , μ±
μ λ μ΄λ° μκΈΈ κ³μ μ ν΄μ κ·Έλ°μ§ μ΄κ² μ΄λ»κ² μ°μ΄κ³ μλμ§, μ΄λ€ μν μ νλμ§ μ‘°κΈ μ΄ν΄κ° κ°λ€...
κ·Όλ° κ°μ¬λμ΄ νμκ° λ무 λΉ λ₯΄μ
μ γ
γ
μ€κ°μ€κ° λ°λΌμ‘κΈ° μ’ νλ€μλ€.
κ± λ§ μΉλ€λ³΄λ μΌλ λ±λ
μμ±λΌμκ³ ...
κ·Έλλ 맨 μ²μ μ
λ¬Έ κ°μ λ€μμ λλ³΄λ¨ λ¬΄μ¨ μλ¦°μ§ μ κ² κ°λ€.
+) 22. 07. 02. μΆκ° μλ£!! (λλΈ κ±΄ 07. 01. μ λλ ^^...)
API(Application Programming Interface)λ μ ν리μΌμ΄μ μννΈμ¨μ΄λ₯Ό λΉλνκ³ ν΅ν©νκΈ° μν μ μ λ° νλ‘ν μ½ μΈνΈμΈ μ ν리μΌμ΄μ νλ‘κ·Έλλ° μΈν°νμ΄μ€λ₯Ό λ»νλ€.
β¬οΈΒ APIμ λν μμΈν μ€λͺ
μ μλ λ§ν¬μ μμ£Ό μ μ λ¦¬λΌ μλ€.
https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces
μ½κ² λ§νμλ©΄, μμ© νλ‘κ·Έλ¨μμ μ¬μ©ν μ μλλ‘ λ€λ₯Έ μμ© νλ‘κ·Έλ¨μ μ μ΄ν μ μκ² λ§λ μΈν°νμ΄μ€λ₯Ό λ»νλ€.
βοΈ νλ‘ νΈμλμ λ°±μλκ° λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κΈ° μν λνμ μΈ λ°©λ²μ΄λ€.
νλ‘ νΈμλ β μμ© νλ‘κ·Έλ¨,
λ°±μλ β μμ€ν
μ 맀μΉλλ€.
APIλ₯Ό μ¬μ©νλ©΄ λ΄λΆ ꡬν λ‘μ§μ μμ§ λͺ»ν΄λ μ μλμ΄ μλ κΈ°λ₯μ μ½κ² μ¬μ©ν μ μλ€.
REST(Representational State Transfer)λ νλ‘ν μ½μ΄λ νμ€μ΄ μλ μν€ν μ² μμΉ μΈνΈμ΄λ€. (μλ²μ ν΄λΌμ΄μΈνΈμ ν΅μ λ°©μ μ€ νλ.)
HTTP URI(Uniform Resource Identifier)λ₯Ό ν΅ν΄ μμμ λͺ μνκ³ HTTP Methodλ₯Ό ν΅ν΄ μμμ κ΅ννλ κ²μ λ§νλ€.
RESTμ νΉμ§
Server-Client ꡬ쑰
μμμ΄ μλ μͺ½μ΄ Server, μμ²νλ μͺ½μ΄ Clientλ€.
ν΄λΌμ΄μΈνΈμ μλ²κ° λ
립μ μΌλ‘ λΆλ¦¬λμ΄ μμ΄μΌ νλ€.
Stateless
μμ² κ°μ ν΄λΌμ΄μΈνΈ μ λ³΄κ° μλ²μ μ μ₯λμ§ μλλ€.
μλ²λ κ°κ°μ μμ²μ μμ ν λ³κ°μ κ²μΌλ‘ μΈμνκ³ μ²λ¦¬νλ€.
Cacheable
HTTPμ νΉμ§μΈ μΊμ± κΈ°λ₯μ μ μ©νλ€.
λλμ μμ²μ ν¨μ¨μ μΌλ‘ μ²λ¦¬νκΈ° μν΄ μΊμλ₯Ό μ¬μ©νλ€.
κ³μΈ΅ν(Layered System)
ν΄λΌμ΄μΈνΈλ μλ²μ ꡬμ±κ³Ό μκ΄ μμ΄ REST API μλ²λ‘ μμ²νλ©΄ λλ€.
μλ²λ λ€μ€ κ³μΈ΅μΌλ‘ ꡬμ±λ μ μλ€. (μ: λ‘λ λ°Έλ°μ±, 보μ μμ, μΊμ λ±)
μΈν°νμ΄μ€ μΌκ΄μ±(Uniform Interface)
μ λ³΄κ° νμ€ νμμΌλ‘ μ μ‘λκΈ° μν΄ κ΅¬μ± μμ κ° ν΅ν© μΈν°νμ΄μ€λ₯Ό μ 곡νλ€.
HTTP νλ‘ν μ½μ λ°λ₯΄λ λͺ¨λ νλ«νΌμμ μ¬μ© κ°λ₯νκ²λ μ€κ³λμ΄ μλ€.
Code on Demand(Optional)
μμ²μ λ°μΌλ©΄ μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μ½λ λλ μ€ν¬λ¦½νΈ(λ‘μ§)λ₯Ό μ λ¬νμ¬ ν΄λΌμ΄μΈνΈ κΈ°λ₯μ νμ₯νλ€.
REST APIλ REST μν€ν
μ²μ μ μ½ μ‘°κ±΄μ μ€μνλ μ ν리μΌμ΄μ
νλ‘κ·Έλλ° μΈν°νμ΄μ€λ₯Ό λ»νλ€.
REST μν€ν
μ²μ μ μ½ μ‘°κ±΄μ μ€μνλ μΉ APIλ₯Ό RESTful APIλΌκ³ νλ€.
RESTful μΉ APIμλ 곡μμ μΈ νμ€μ΄ μλ€.
μΉ κΈ°λ°μ REST APIλ₯Ό μ€κ³ν κ²½μ°μλ URIλ₯Ό ν΅ν΄ μμμ ννν΄μΌ νλ€.
μμμ λν μ‘°μμ HTTP Method(CRUD)λ₯Ό ν΅ν΄ ννν΄μΌ νλ€.
λ©μμ§λ₯Ό ν΅ν 리μμ€ μ‘°μ
URIμλ μλ¬Έμλ₯Ό μ¬μ©νλ€.
Resourceμ μ΄λ¦μ΄λ URIκ° κΈΈμ΄μ§ κ²½μ° νμ΄ν(-)μ ν΅ν΄ κ°λ μ±μ λμΌ μ μλ€.
μΈλλ°(_)λ μ¬μ©νμ§ μλλ€.
νμΌ νμ₯μλ₯Ό νννμ§ μλλ€.
RESTλ₯Ό ν΅ν΄ βμ 보βλ₯Ό μ μ μλ€.
λ§μ½ μ£Όμμ https://(λλ©μΈ)/classes
κ° λΆλλ€λ©΄
{
"results": [
{"idx": 1, "name": "μ΄λ±λ°"},
{"idx": 2, "name": "μ€λ±λ°"},
{"idx": 3, "name": "κ³ λ±λ°"}
]
}
μ΄μ²λΌ βλ°β λͺ©λ‘μ λ°μμ¬ κ²μ΄λ€.
κ·Έ λ€μ https://(λλ©μΈ)/classes/2
μ΄λ κ² idx(κ³ μ λ²νΈ)κ° λ°λΌ λΆμΌλ©΄ λ°λ€ μ€ μΈλ±μ€ λ²νΈκ° 2μΈ λ°μ μ λ³΄κ° μ¬ κ²μ΄λ€.
β {"idx": 2, "name": "μ€λ±λ°"}
κ²°κ΅ REST APIλ HTTP μμ²μ λ³΄λΌ λ μ΄λ€ URIμ μ΄λ€ λ©μλλ₯Ό μ¬μ©ν μ§ κ°λ°μλ€ μ¬μ΄μ μ§μΌμ§λ μ½μμ΄λΌ ν μ μλ€.
λ°λΌμ REST APIλ νΉμ κΈ°μ μ μλ―Ένλ κ²μ΄ μλλΌ, HTTPλ₯Ό μ΄μ©ν΄μ κΈ°κ³λ€μ΄ ν΅μ μ ν λ HTTPκ° κ°μ§ μ μ¬λ ₯μ μ΅λν μ΄μ©ν μ μλλ‘ νλ κ²μ΄λ€.
μ°Έκ³ μλ£
Red Hat, βREST API(RESTful API, λ μ€νΈν API)λ? ꡬν λ° μ¬μ©λ²β, https://www.redhat.com/ko/topics/api/what-is-a-rest-api
μμ§λ·μ»΄ 곡μ λΈλ‘κ·Έ, βμΉ κ°λ° REST API / JSON μμ보기!β, https://blog.naver.com/ydot/222738115724