πΎ [CS] APIμμμ μΈν°νμ΄μ€(Interface)λ 무μμΌκΉ?
- APIμμμ μΈν°νμ΄μ€(Interface)λ νλ‘κ·Έλ¨ κ° μνΈμμ©μ μν κ·μΉμ΄λ λ°©λ²μ μ μν κ²μ μλ―Έν©λλ€.
- μ¬κΈ°μ μΈν°νμ΄μ€(Interface)λ API(μμ© νλ‘κ·Έλλ° μΈν°νμ΄μ€, Application Programming Interface)κ° μ 곡νλ κΈ°λ₯μ λ€λ₯Έ μννΈμ¨μ΄λ μμ€ν μ΄ μ΄λ»κ² μ΄μ©ν μ μλμ§λ₯Ό κ·μ ν λͺ μΈλΌκ³ ν μ μμ΅λλ€.
1οΈβ£ APIμμμ μΈν°νμ΄μ€ μ μ
-
μΈν°νμ΄μ€λ μμ€ν
μ΄ μ 곡νλ κΈ°λ₯μ μΈλΆμμ μ΄λ»κ² μ¬μ©ν μ μλμ§μ λν κ·μΉκ³Ό ꡬ쑰λ₯Ό μ€λͺ
ν©λλ€.
- μ΄λ ν¨μ, λ©μλ, λ°μ΄ν° νμ, νΈμΆ λ°©λ² λ± λ€μν μμλ‘ κ΅¬μ±λ μ μμΌλ©°, APIλ₯Ό ν΅ν΄ μννΈμ¨μ΄ μ»΄ν¬λνΈ κ°μ μνΈμμ©μ κ°λ₯νκ² ν©λλ€.
1οΈβ£ μ£Όμ νΉμ§.
1οΈβ£ ν¨μλ λ©μλ νΈμΆ κ·μΉ.
- APIλ μΈλΆ νλ‘κ·Έλ¨μ΄ νΈμΆν μ μλ ν¨μλ λ©μλλ₯Ό μ μν©λλ€.
- μΈν°νμ΄μ€λ μ΄ ν¨μλ λ©μλκ° μ΄λ»κ² νΈμΆλκ³ , μ΄λ€ μΈμκ° νμνμ§, κ·Έλ¦¬κ³ λ°ν κ°μ΄ 무μμΈμ§λ₯Ό λͺ
μν©λλ€.
- μλ₯Ό λ€μ΄, νΉμ APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ ν¨μκ° μλ€λ©΄, κ·Έ ν¨μκ° μ΄λ€ μ λ ₯ κ°μ νμλ‘ νκ³ , μ΄λ€ νμμ λ°μ΄ν°λ₯Ό λ°ννλμ§ μ μ λ κ²μ΄ μΈν°νμ΄μ€ μ λλ€.
- μΈν°νμ΄μ€λ μ΄ ν¨μλ λ©μλκ° μ΄λ»κ² νΈμΆλκ³ , μ΄λ€ μΈμκ° νμνμ§, κ·Έλ¦¬κ³ λ°ν κ°μ΄ 무μμΈμ§λ₯Ό λͺ
μν©λλ€.
2οΈβ£ λͺ μΈνλ μ λ ₯κ³Ό μΆλ ₯.
- API μΈν°νμ΄μ€λ λ°μ΄ν° νμκ³Ό ꡬ쑰λ₯Ό λͺ
νν μ μν©λλ€.
- μ΄λ κ°λ°μκ° APIμ μνΈμμ©ν λ μ΄λ€ νμμ μ
λ ₯κ³Ό μΆλ ₯μ μ²λ¦¬ν΄μΌ νλμ§ μ΄ν΄νλ λ° νμμ μ
λλ€.
- μλ₯Ό λ€μ΄, APIμ ν ν¨μκ°
JSON
νμμ μ λ ₯ λ°μ΄ν°λ₯Ό λ°κ³XML
νμμΌλ‘ μΆλ ₯μ λ°ννλ€λ©΄, μ΄ λͺ¨λ μ¬νμ μΈν°νμ΄μ€μ λͺ μλμ΄ μμ΄μΌ ν©λλ€.
- μλ₯Ό λ€μ΄, APIμ ν ν¨μκ°
- μ΄λ κ°λ°μκ° APIμ μνΈμμ©ν λ μ΄λ€ νμμ μ
λ ₯κ³Ό μΆλ ₯μ μ²λ¦¬ν΄μΌ νλμ§ μ΄ν΄νλ λ° νμμ μ
λλ€.
3οΈβ£ μΆμν.
- μΈν°νμ΄μ€λ APIμ λ΄λΆ ꡬνμ μΆμννκ³ , μΈλΆ μ¬μ©μμκ²λ νμν κΈ°λ₯λ§μ μ 곡νλ ꡬ쑰μ
λλ€.
- APIλ₯Ό μ¬μ©νλ κ°λ°μλ κ·Έ λ΄λΆκ° μ΄λ»κ² λμνλμ§ μ νμκ° μμΌλ©°, μ ν΄μ§ κ·κ²©λλ‘ νΈμΆνλ©΄ μνλ κ²°κ³Όλ₯Ό μ»μ μ μμ΅λλ€.
πββοΈ DIPμ μ μμμ λ§νλ βμΆμνλ κ²βκ³Ό βμΆμνβμ κ°λ μ μ°¨μ΄μ .
πββοΈ DIPμ μ μμμ λ§νλ βμΆμνλ κ²βμ΄λ 무μμΌκΉ?
4οΈβ£ κ³μ½(Contract)
- APIμμμ μΈν°νμ΄μ€λ μΌμ’
μ κ³μ½μΌλ‘ κ°μ£Όλ μ μμ΅λλ€.
- APIλ μ¬μ©μμκ² νΉμ κΈ°λ₯μ μ 곡νκΈ° μν μ½μμ νλ©°, μ¬μ©μλ κ·Έ μ½μλ λλ‘ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ μλ‘ λ€λ₯Έ μμ€ν κ°μ μνν ν΅μ μ΄ κ°λ₯ν΄μ§λλ€.
- APIλ μ¬μ©μμκ² νΉμ κΈ°λ₯μ μ 곡νκΈ° μν μ½μμ νλ©°, μ¬μ©μλ κ·Έ μ½μλ λλ‘ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν©λλ€.
2οΈβ£ APIμμμ μΈν°νμ΄μ€μ μν .
1οΈβ£ μλΉμ€ μ 곡.
- APIλ μμ€ν
μ΄ μ 곡νλ κΈ°λ₯μ μΈλΆμ 곡κ°νμ¬, λ€λ₯Έ μμ€ν
μ΄λ νλ‘κ·Έλ¨μ΄ κ·Έ κΈ°λ₯μ νμ©ν μ μκ² ν©λλ€.
- μ΄ κ³Όμ μμ μΈν°νμ΄μ€λ μ΄λ€ κΈ°λ₯μ΄ μ 곡λλμ§, μ΄λ»κ² μ¬μ©ν΄μΌ νλμ§λ₯Ό μ€λͺ νλ μ€κ³λ μν μ ν©λλ€.
2οΈβ£ νΈνμ± λ³΄μ₯.
- API μΈν°νμ΄μ€λ μμ€ν
κ°μ μνΈμμ©μμ νΈνμ±μ 보μ₯νλ μν μ ν©λλ€.
- ν μμ€ν μ΄ μ 곡νλ APIλ₯Ό μΈλΆ μμ€ν μ΄ μ΄μ©ν λ, μΈν°νμ΄μ€λ₯Ό μ€μν¨μΌλ‘μ¨ μλ‘ λ€λ₯Έ μμ€ν κ°μλ μΌκ΄λ μνΈμμ©μ΄ κ°λ₯ν΄μ§λλ€.
3οΈβ£ μ¬μ©μμ μμ€ν κ°μ κ²½κ³ μ€μ .
- API μΈν°νμ΄μ€λ μΈλΆ μ¬μ©μκ° μ κ·Όν μ μλ κΈ°λ₯κ³Ό, λ΄λΆ μμ€ν
μμλ§ μ¬μ©λλ κΈ°λ₯μ ꡬλΆνλ κ²½κ³μ μν μ ν©λλ€.
- μ΄λ 보μ μΈ‘λ©΄μμλ μ€μνλ©°, μ¬μ©μλ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μ 곡λ κΈ°λ₯λ§μ μ¬μ©ν μ μμ΅λλ€.
4οΈβ£ μ¬μ¬μ©μ±.
- μΈν°νμ΄μ€λ λμΌν κ·κ²©μ λ°λ₯΄λ―λ‘, ν λ² μ μλ APIλ λ€μν νλ‘κ·Έλ¨μ΄λ μμ€ν
μμ μ¬μ¬μ©λ μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ° μκ°κ³Ό λΉμ©μ μ κ°ν μ μμ΅λλ€.
3οΈβ£ μμ: RESTful APIμ μΈν°νμ΄μ€.
-
RESTful APIλ₯Ό μλ‘ λ€λ©΄, μΈν°νμ΄μ€λ μ£Όλ‘ HTTP λ©μλ(GET, POST, PUT, DELETE λ±)λ₯Ό μ¬μ©νμ¬ λ¦¬μμ€μ μ κ·Όνλ λ°©λ²μ κ·μ ν©λλ€.
- GET μμ² : νΉμ λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ° μν κ·μΉμ μ μ
- POST μμ² : λ°μ΄ν°λ₯Ό μμ±νλ λ°©λ².
- PUT μμ² : λ°μ΄ν°λ₯Ό μ λ°μ΄νΈνλ λ°©λ².
- DELETE μμ² : λ°μ΄ν°λ₯Ό μμ νλ λ°©λ².
- RESTful APIμ μΈν°νμ΄μ€λ μμ²μ λ°λΌ μ΄λ€ κ²½λ‘(URL)λ₯Ό μ¬μ©ν μ§, μ΄λ€ 맀κ°λ³μμ ν€λκ° νμνμ§, κ·Έλ¦¬κ³ μλ΅μ΄ μ΄λ€ ννλ‘ λμμ¬μ§λ₯Ό κ·μ ν©λλ€.
4οΈβ£ μΈν°νμ΄μ€μ νλ‘ν μ½μ μ°¨μ΄μ .
-
μΈν°νμ΄μ€
- κΈ°λ₯μ μ 곡νλ λ°©μκ³Ό κ·μΉμ μ€λͺ
ν©λλ€.
- μ΄λ¨κ² λ°μ΄ν°λ₯Ό μ λ ₯νκ³ , κ²°κ³Όλ₯Ό μΆλ ₯λ°λμ§μ λν μ½μμ λλ€.
- κΈ°λ₯μ μ 곡νλ λ°©μκ³Ό κ·μΉμ μ€λͺ
ν©λλ€.
-
νλ‘ν μ½
- λ°μ΄ν°κ° μ΄λ»κ² μ μ‘λλμ§μ λν κ·μΉμ μ€λͺ
ν©λλ€.
- ν΅μ κ·μΉμ λ€λ£¨λ©°, μ μ‘ λ°©μμ μ€μ μ λ‘λλ€.
- μλ₯Ό λ€μ΄, HTTPλ TCP/IPλ νλ‘ν μ½μ λλ€.
- ν΅μ κ·μΉμ λ€λ£¨λ©°, μ μ‘ λ°©μμ μ€μ μ λ‘λλ€.
- λ°μ΄ν°κ° μ΄λ»κ² μ μ‘λλμ§μ λν κ·μΉμ μ€λͺ
ν©λλ€.
5οΈβ£ κ²°λ‘ .
-
APIμμ μΈν°νμ΄μ€λ νλ‘κ·Έλ¨ κ° μνΈμμ©μ μν λͺ
μΈλ‘, μΈλΆ μμ€ν
μ΄λ μννΈμ¨μ΄κ° μ΄λ»κ² κΈ°λ₯μ νΈμΆνκ³ μ¬μ©ν μ μλμ§λ₯Ό κ·μ ν©λλ€.
- μ΄λ μννΈμ¨μ΄ κ΅¬μ± μμ κ°μ κ³μ½μ²λΌ λμνλ©°, μ¬μ©μμ μμ€ν κ°μ κ²½κ³λ₯Ό μ€μ νκ³ νΈνμ±μ 보μ₯νμ¬ μνν ν΅μ μ κ°λ₯νκ² ν©λλ€.