REST API
API(Application Programming Interface)(https://ko.wikipedia.org/wiki/API)
APIλ κ°λ¨ν λ§νμλ©΄ μ»΄ν¨ν°λ μ»΄ν¨ν° νλ‘κ·Έλ¨ μ¬μ΄μ μ°κ²°μ λ§νλ€. μΌμ’ μ μΈν°νμ΄μ€μ΄λ©° λ€λ₯Έ μ’ λ₯μ μννΈμ¨μ΄μ μλΉμ€λ₯Ό μ 곡νλ κ²½κ³λ©΄μ΄λ€. μ΄ APIμ ꡬνμ APIλ₯Ό μ¬μ©νλ μ»΄ν¨ν°λ μμ€ν μ΄ νκ² λλ€. μ¬λκ³Ό μ»΄ν¨ν°λ₯Ό μλ κ²μ μ¬μ©μ μΈν°νμ΄μ€λΌκ³ νμ§λ§, μ§κΈ λ§νλ APIλ μ»΄ν¨ν°μ μ»΄ν¨ν° νΉμ μννΈμ¨μ΄λ₯Ό μλ μν μ νλ€.
APIμ λͺ©μ μ€ νλλ λ΄λΆμ μΈμΈν κ²λ€μ μ¨κΈ°λ κ²μ΄λ€. μ΄λ κ² λλ©΄ λμ€μ λ³κ²½λλλΌλ νλ‘κ·Έλλ¨Έκ° μ μ©νκ² μ¬μ©ν μ μλ€. μμ¦μλ νν APIλΌλ©΄ μΉ APIλ₯Ό μλ―Ένλ κ²½μ°κ° λ§λ€.
Communication : μλ‘ κ°μ μν΅μ νλ κΈ°λ₯μ΄λ€.
Specification : μν΅μ μν΄ νμν κ²λ€μ λͺ μΈ
Information Hiding(Principle)
APIλ μλ‘ μν΅νκΈ° μν μ΅μνμ λͺ μΈλ§ μλ €μ£ΌκΈ° λλ¬Έμ μΈμΈν μ 보λ μλνλ€.
ν€λ³΄λλ₯Ό λλ₯΄λ©΄ λ΄λΆμ μΌλ‘ 볡μ‘ν μ νΈκ° μ€κ°κ² μ§λ§, κ²μΌλ‘λ ν€λ₯Ό λλ₯΄λ©΄ μ λ ₯μ΄ λλ κ²λ§ μκ³ λ μ¬μ©ν μ μλ―μ΄ μ¬μ©μ νμν μ λ³΄λ§ μλ €μ£Όκ³ λ΄λΆμ μ 보λ μλνλ€.
μ¨κΈ°κ³ μ νλ μ 보λ₯Ό λ€λ‘ μ¨κΈ°λ κ°λ
μλ°μμλ κ°μ²΄μ μμ±μ μ§μ μ κ·Όνμ§ λͺ»νκ² μ¨κΈ°λ κ² (private μ κ·Όμ μ΄μ)
Encapsulation
μμμ λ§ν μ 보μλμ λ°©λ² μ€μ νλ
μ 보λ₯Ό νκ³³μΌλ‘ λ¬Άκ³ , λλ¬λ΄κ³ μ νλ μ λ³΄λ§ μΈλΆμ λ ΈμΆμν€κ³ μλνλ €λ μ 보λ λ΄λΆμ μ¨κΈ΄λ€.
μ°κ΄μλ λ³μμ ν¨μλ₯Ό ν΄λμ€λ‘ λ¬Άλ μμ
Implementation : λ©μλμ ꡬνμ λ§νλ€.
μΆμ² - https://ko.wikipedia.org/wiki/API
μ 보μλ(Information Hiding)κ³Ό μΊ‘μν(Encapsulation)
μ 보μλ
μ 보μλμ 볡μ‘νκ±°λ λ³κ²½ κ°λ₯ν μ€κ³ κ²°μ μ μμ μ μΈ μΈν°νμ΄μ€ λ€λ‘ μ¨κΈ°λ μ€κ³μ리μ΄λ€.
μ 보 μλμ λͺ©μ μ λ³κ²½μ λν μ μ°μ±μ μ 곡νλ κ²μ΄λ€.
μ 보 μλμΌλ‘ μΈν΄ λ³κ²½μ λν νκΈν¨κ³Όκ° μ§μμ μ΄κΈ° λλ¬Έμ λ³κ²½μ λ°λ₯Έ λΉμ©μ μ€μΌ μ μλ€.
μ μ ν λͺ¨λνλ μ½λλ μμ€ν μ μ£Όμ΄μ§ μΌλΆλ₯Ό μ΄ν΄νκΈ° μν΄ νμν μ 보μ μμ μ΅μνν¨μΌλ‘μ¨ νλ‘κ·Έλλ¨Έκ° βμΈμ§νλ λΆνβλ₯Ό μ€μ¬μ€λ€. μ μ€κ³λ νλ‘κ·Έλ¨μμλ λͺ¨λ κ°μ μΈν°νμ΄μ€κ° κ°λ₯ν βμ’μΌλ©°(μ¦, κ°λ¨νλ©°)β λ³κ²½λ μ μλ μ€κ³μ κ²°μ μ¬νμ νλμ λͺ¨λμ μ¨κ²¨μ§λ€. μ¬κΈ°μ λͺ¨λμ μ¨κ²¨μ Έ μλ€λ κ²μ΄ μ€μνλ°, λλΆλΆμ μμ© μννΈμ¨μ΄λ μ²μμ κ°λ°λ³΄λ€ μ μ§λ³΄μ(μ€λ₯ μμ κ³Ό κ°μ )μ λ€μ΄κ°λ νλ‘κ·Έλλ¨Έμ μκ°μ΄ ν¨μ¬ λ λ§κΈ° λλ¬Έμ΄λ€.
μ 보μλμ΄λ λ³κ²½κ°λ₯μ±μ΄ λμ μ€κ³λ₯Ό λΆλ¦¬νλ μμΉμ΄λ©°, λ³κ²½λ κ²½μ° νλ‘κ·Έλ¨μ λ€λ₯Έ λΆλΆμ΄ κ΄λ²μνκ² μμ λμ§ μλλ‘ λ³΄νΈνλλ‘ νλ μμΉμ΄λ€.
μ 보μλμ μμΉμλ μ 보λ λ€λ‘ μ¨κΈ°λ κ°λ μ΄λ©°, μΊ‘μνλ μ 보μλμ λ°©λ² μ€μ νλμ΄λ€.
μλ° νλ‘κ·Έλλ°μμ μ 보μλμ κΈ°λ²μ 3κ°μ§κ° μλ€.
κ°μ²΄μ ꡬ체μ νμ μλ(μ μΊμ€ν ) : νμ μ μ μΊμ€ν νμ¬ λΆλͺ¨ ν΄λμ€ νμ μΌλ‘ ν΅ν©νλ©΄ μμν΄λμ€μ μΈλΆ νμ μ μλν μ μλ€.
κ°μ²΄μ νλ λ° λ©μλ μλ(μΊ‘μν, μ κ·Όμ μ΄μ μ¬μ©) : ν΄λμ€μ λ©€λ²λ₯Ό privateμ μ΄μ©νμ¬ μ κ·Όμ νμ νλ©΄ νλλ₯Ό μλν μ μλ€.
ꡬν μλ(μΈν°νμ΄μ€ & μΆμ ν΄λμ€) : μΈν°νμ΄μ€λ μΆμ ν΄λμ€μ μ μΈν λ©μλλ₯Ό ꡬννλλ‘ κ°μ νκ³ , ꡬνλ ν΄λμ€μ νμ μ μΈν°νμ΄μ€λ μΆμν΄λμ€ νμ μΌλ‘ λ체ν¨μΌλ‘ μΈλΆ ꡬνμ μλν μ μλ€.
μ΄ κΈμμ μ μ 리λ λ΄μ©μ λ³Ό μ μμλ€.
Architectureμ Architecture Styleμ μ°¨μ΄
μν€ν μ³(Architecture)λ μμ€ν μ λ°μ λμμΈκ³Ό ꡬ쑰λ₯Ό λ§νλ€. μ¬κΈ°μλ ꡬμ±μμ, λͺ¨λ, μΈν°νμ΄μ€μ κ·Έ μ¬μ΄μ κ΄κ³μ±λ ν¬ν¨νλ€. μν€ν μ³λ μ 체μ μΈ λμμΈμ ν¬κ΄μ μΌλ‘ λ§νλ€.
μν€ν μ³ μ€νμΌμ μμ€ν μ μν€ν μ³λ₯Ό λμμΈνλ λ° μ¬μ©λλ νΉμ μμΉμ΄λ ν¨ν΄ λ° κ΄νμ λ§νλ€. μν€ν μ³ μ€νμΌμ μμ€ν μ ꡬμ±νλ νΉμ λ°©μμ΄λΌλμ§, ꡬ쑰ννλ λ°©λ²μ κ°λ¦¬ν€λ κ°λ μ΄λ€.
μν€ν μ³ μ€νμΌμ μμ
ν΄λΌμ΄μΈνΈ - μλ² μν€ν μ³(client-server architecture) : μλ²μ ν΄λΌμ΄μΈνΈ κ°μ λ€νΈμν¬ ν΅μ νλ λ°©μ
MSA (Microservices architecture) : μμ€ν μ μκ³ λ 립μ μλΉμ€λ‘ λΆν νκ³ μλ‘ κ°μ λ€νΈμν¬λ₯Ό ν΅ν΄ ν΅μ νλ λ°©μ
μ΄λ²€νΈ κΈ°λ° μν€ν μ³(Event-driven architecture) : μ΄ μ€νμΌμ μμ€ν μ μ΄λ²€νΈ κ°λ μ μ€μ¬μΌλ‘ ꡬμΆνλ€. κ·Έλ¦¬κ³ μμ€ν λ³κ²½μΌλ‘ μΈν΄ λ°μλλ μ΄λ²€νΈλ€μ μ¬μ©ν΄μ λ€λ₯Έ μμ μ΄λ νλ‘μΈμ€λ₯Ό νΈλ¦¬κ±°νλ λ°©μμ΄λ€.
μ΄λ²€νΈλ?
μ΄λ²€νΈ(Event)λ μννΈμ¨μ΄ μμ€ν μμ λ°μνλ μ€μν λμ λλ μ¬κ±΄μ λνλ΄λ κ°λ μ΄λ€. μΌλ°μ μΌλ‘ μμ€ν μ μν λ³ν, λ³κ²½ λ°μ΄ν° λ±κ³Ό κ°μ μΈλΆ μ λ ₯μ μν΄ λ°μλλ€. μ΄λ¬ν μ΄λ²€νΈλ₯Ό μ΄μ©ν΄μ μ΄λ²€νΈ κΈ°λ° μμ€ν μ(Event-Driven System) ꡬμ±νκΈ°λ νλλ° μ΄κ²μ μμ€ν κ°μ μ΄λ²€νΈ λ°μμ μν΄ μ°κ³λμ΄ μμ©νλλ‘ νλ λμ¨ν κ²°ν©μ μ 곡νλ€. λλΆμ νμ₯μ±μ λμΌ μ μλ€.
μν€ν μ² μ€νμΌμ΄λ, κ·Έ μ€νμΌμ λ°λ₯΄λ μν€ν μ²κ° μ§μΌμΌ ν μ μ½μ‘°κ±΄λ€μ μ§ν©μ΄λ€.
REST(Representational State Transferf)(7κ°μ§ μ μ½ μ‘°κ±΄ μμ£Όλ‘ μ 리)
Representational State Transferμ μ€μλ§
μΉμ μν λ€νΈμν¬ κΈ°λ° μν€ν μ² μ€νμΌ
Roy Fieldingμ΄ κ·Έμ λ°μ¬νμ λ Όλ¬Έμμ μ²μ μκ°νλ€. (βArchitectural Styles and the Design of Network-based Software Architecturesβ)
λ€νΈμν¬ κΈ°λ° μ ν리μΌμ΄μ μν€ν μ²μ κ΄μ¬μ¬νλ€
μ±λ₯
κ·λͺ¨νμ₯μ±
λ¨μμ±
μμ μ©μ΄μ±
κ°μμ±
μ΄μμ±
μ λ’°μ±
μ 보μλκ³Ό μΊ‘μν, κ·Έλ¦¬κ³ μν€ν μ³μ μν€ν μ³ μ€νμΌμ μ°¨μ΄, RESTμ κ΄ν΄μ λ€μ μ λ¦¬κ° νμν κ² κ°λ€.
Last updated