βπΎ [CS] API(Application Programming Interface)λ 무μμΌκΉ?β
- API(Application Programming Interface) λ μ ν리μΌμ΄μ μ΄ λ€λ₯Έ μννΈμ¨μ΄λ μλΉμ€μ μνΈμμ©ν μ μλλ‘ νλ μΈν°νμ΄μ€λ₯Ό μλ―Έν©λλ€.
- μ½κ² λ§νλ©΄, APIλ νλ‘κ·Έλ¨ κ°μ ν΅μ μ κ°λ₯νκ² ν΄μ£Όλ μΌμ’ μ κ³μ½ λλ μ½μμ λλ€.
- APIλ κ°λ°μκ° νΉμ κΈ°λ₯μ μ¬μ©ν μ μκ² λ―Έλ¦¬ μ μλ λ©μλμ κ·μΉμ μ§ν©μ μ 곡ν©λλ€.
1οΈβ£ APIμ κΈ°λ³Έ κ°λ .
-
μΈν°νμ΄μ€
- APIλ λ μμ€ν κ°μ μνΈμμ©μ μ μνλ κ²½κ³ μν μ ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ λ μμ€ν μ΄ μλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κ±°λ κΈ°λ₯μ μμ²ν μ μμ΅λλ€.
-
ν΅μ
- APIλ μννΈμ¨μ΄ μ ν리μΌμ΄μ μ΄ λ€λ₯Έ μννΈμ¨μ΄ μλΉμ€λ λΌμ΄λΈλ¬λ¦¬μ ν΅μ νλ λ°©λ²μ μ 곡ν©λλ€.
- μλ₯Ό λ€μ΄, APIλ₯Ό ν΅ν΄ μ ν리μΌμ΄μ μ μΈλΆ μλΉμ€μμ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ±°λ, λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ λ±μ μμ μ ν μ μμ΅λλ€.
-
μΆμν
- APIλ λ΄λΆμ μΈ κ΅¬νμ μ¨κΈ°κ³ , μΈλΆ κ°λ°μκ° νμν κΈ°λ₯λ§ μ¬μ©ν μ μκ² μΆμνλ κΈ°λ₯μ μ 곡ν©λλ€.
- λ΄λΆμ 볡μ‘ν λ‘μ§μ μ κ²½ μ°μ§ μκ³ , μ μλ λͺ λ Ήλ§ νΈμΆνλ©΄ ν΄λΉ κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€.
πββοΈ DIPμ μ μμμ λ§νλ βμΆμνλ κ²βκ³Ό βμΆμνβμ κ°λ μ μ°¨μ΄μ .
2οΈβ£ APIμ μ ν.
1οΈβ£ μΉ API
- μΉμμ λμνλ APIλ‘, HTTP νλ‘ν μ½μ ν΅ν΄ μ ν리μΌμ΄μ
κ° ν΅μ μ μ²λ¦¬ν©λλ€.
- μλ₯Ό λ€μ΄, RESTful APIλ SOAP APIλ μΉμ ν΅ν΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ λ° μ¬μ©λ©λλ€.
- μΉ APIλ ν΄λΌμ΄μΈνΈμ μλ² κ°μ ν΅μ μ μ½κ² ν΄μ£Όλ©°, μΉ μλΉμ€ λλ ν΄λΌμ°λ μλΉμ€μμ μ£Όλ‘ μ¬μ©λ©λλ€.
- μ:
GET
,POST
,PUT
,DELETE
λ©μλλ₯Ό μ¬μ©νμ¬ μλ²μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ API.
- μ:
2οΈβ£ λΌμ΄λΈλ¬λ¦¬ API
- νλ‘κ·Έλλ° μΈμ΄μμ μ 곡νλ λΌμ΄λΈλ¬λ¦¬μ κΈ°λ₯μ μ¬μ©ν μ μκ² ν΄μ£Όλ APIμ
λλ€.
- νΉμ κΈ°λ₯μ΄λ λ°μ΄ν° ꡬ쑰λ₯Ό μ 곡νμ¬ κ°λ°μκ° ν΄λΉ κΈ°λ₯μ ꡬνν μ μλλ‘ λμμ€λλ€.
- μ: Javaμ
java.util.List
APIλ λͺ©λ‘ λ°μ΄ν°λ₯Ό μ½κ² λ€λ£° μ μλ λ©μλμ ν΄λμ€λ₯Ό μ 곡ν©λλ€.
- μ: Javaμ
- νΉμ κΈ°λ₯μ΄λ λ°μ΄ν° ꡬ쑰λ₯Ό μ 곡νμ¬ κ°λ°μκ° ν΄λΉ κΈ°λ₯μ ꡬνν μ μλλ‘ λμμ€λλ€.
3οΈβ£ μ΄μ체μ API
- μ΄μ체μ κ° μ 곡νλ μμ€ν
μμμ μ ν리μΌμ΄μ
μ΄ μ¬μ©ν μ μλλ‘ ν΄μ£Όλ APIμ
λλ€.
- νμΌ μμ€ν
, λ€νΈμν¬, νλμ¨μ΄ μ₯μΉμμ μνΈμμ©μ μ²λ¦¬ν μ μκ² ν©λλ€.
- μ: Windows APIλ νμΌ μ½κΈ°/μ°κΈ°, λ€νΈμν¬ ν΅μ λ±μ μν λ€μν κΈ°λ₯μ μ 곡ν©λλ€.
- νμΌ μμ€ν
, λ€νΈμν¬, νλμ¨μ΄ μ₯μΉμμ μνΈμμ©μ μ²λ¦¬ν μ μκ² ν©λλ€.
4οΈβ£ νλ μμν¬ API
- νΉμ νλ μμν¬μμ μ 곡νλ APIλ ν΄λΉ νλ μμν¬μ κΈ°λ₯μ μ½κ² μ¬μ©ν μ μλλ‘ λμμ€λλ€.
- μλ₯Ό λ€μ΄, Spring νλ μμν¬μμ μ 곡νλ APIλ μΉ μ ν리μΌμ΄μ κ°λ°μ νμν λ€μν κΈ°λ₯μ μ 곡ν©λλ€.
πββοΈ λΌμ΄λΈλ¬λ¦¬(Library)μ νλ μμν¬(Framework)μ μ°¨μ΄μ .
3οΈβ£ APIμ λμ μ리.
- APIλ μ£Όλ‘ μμ²(Request)κ³Ό μλ΅(Response)μΌλ‘ μλν©λλ€.
- ν΄λΌμ΄μΈνΈκ° νΉμ μμ
μ μμ²νλ©΄, μλ²κ° ν΄λΉ μμ
μ μ²λ¦¬ν ν κ²°κ³Όλ₯Ό λ°ννλ λ°©μμ
λλ€.
- 1. ν΄λΌμ΄μΈνΈκ° μμ² : ν΄λΌμ΄μΈνΈ μ ν리μΌμ΄μ μ APIλ₯Ό μ¬μ©ν΄ νΉμ μμ μ μλ²μ μμ²ν©λλ€.
- 2. μλ²κ° μ²λ¦¬ : API μλ²λ μμ²μ μ²λ¦¬νκ³ , νμν λ°μ΄ν°λ₯Ό μ‘°ννκ±°λ μμ μ μνν©λλ€.
- 3. μλ²κ° μλ΅ : μλ²λ μμ²μ λν κ²°κ³Ό(λ°μ΄ν°λ μμ μ±κ³΅ μ¬λΆ)λ₯Ό ν΄λΌμ΄μΈνΈμκ² μλ΅μΌλ‘ λ°νν©λλ€.
- ν΄λΌμ΄μΈνΈκ° νΉμ μμ
μ μμ²νλ©΄, μλ²κ° ν΄λΉ μμ
μ μ²λ¦¬ν ν κ²°κ³Όλ₯Ό λ°ννλ λ°©μμ
λλ€.
4οΈβ£ APIμ μμ.
1οΈβ£ Google Maps API.
- κ°λ°μλ Google Maps APIλ₯Ό μ¬μ©ν΄ μμ μ μ ν리μΌμ΄μ
μ μ§λ κΈ°λ₯μ μΆκ°ν μ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ μ¬μ©μλ μ€μκ° μ§λ μ 보λ₯Ό λ³΄κ³ , κΈΈ μλ΄λ₯Ό λ°μ μ μμ΅λλ€.
- μ:
https://maps.googleapis.com/maps/api/geocode/json?address=New+York
- μ:
- μ΄λ₯Ό ν΅ν΄ μ¬μ©μλ μ€μκ° μ§λ μ 보λ₯Ό λ³΄κ³ , κΈΈ μλ΄λ₯Ό λ°μ μ μμ΅λλ€.
2οΈβ£ (ν)X (ꡬ)Twitter API.
- (ν)X (ꡬ)Twitterλ APIλ₯Ό ν΅ν΄ μΈλΆ μ ν리μΌμ΄μ
μ΄ νΈμμ μ½κ±°λ μμ±ν μ μλ κΈ°λ₯μ μ 곡ν©λλ€.
- μ: νΉμ ν΄μνκ·Έλ‘ νΈμ κ²μ, μ¬μ©μ νλ‘ν μ 보 μ‘°ν λ±.
3οΈβ£ JPA API
- JAP(Java Persistence API)λ μλ° μ ν리μΌμ΄μ
μμ λ°μ΄ν°λ² μ΄μ€μ μνΈμμ©ν μ μλ APIλ‘, κ°μ²΄μ§ν₯μ μΌλ‘ λ°μ΄ν°λ² μ΄μ€ μμ
μ ν μ μκ² ν©λλ€.
- κ°λ°μλ SQLμ μ§μ μμ±νμ§ μκ³ , JPAκ° μ 곡νλ λ©μλλ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€ μμ μ μ²λ¦¬ν μ μμ΅λλ€.
EntityManager em = entityManagerFactory.createEntityManager();
User user = em.find(User.class, 1L) // User κ°μ²΄ μ‘°ν
πββοΈ μμμ±(Persistence)λ 무μμΌκΉ?
4οΈβ£ APIμ λ¨μ .
1οΈβ£ μμ‘΄μ±.
- μΈλΆ APIλ₯Ό μ¬μ©ν κ²½μ°, ν΄λΉ APIμ μμ‘΄νκ² λ©λλ€.
- λ§μ½ APIκ° λ³κ²½λκ±°λ μ€λ¨λλ©΄ μ ν리μΌμ΄μ μ΄ μν₯μ λ°μ μ μμ΅λλ€.
πββοΈ μμ‘΄μ±(Dependency)
2οΈβ£ μ±λ₯.
- APIλ₯Ό μ¬μ©ν ν΅μ μ΄ λ릴 μ μμ΅λλ€.
- νΉν μ격 μλ²μμ API νΈμΆμ λ€νΈμν¬ μ§μ°μ μν₯μ λ°μ μ μμ΅λλ€.
3οΈβ£ μ ν μ¬ν.
- API μ 곡μλ μ¬μ©λμ μ νν μ μμ΅λλ€.
- μλ₯Ό λ€μ΄, ν루μ νΈμΆν μ μλ API μμ² μμ μ νμ΄ μμ μ μμ΅λλ€.
5οΈβ£ κ²°λ‘ .
- APIλ μννΈμ¨μ΄ μ ν리μΌμ΄μ
μ΄ μλ‘ μνΈμμ©ν μ μλλ‘νλ μ€κ° λ€λ¦¬ μν μ ν©λλ€.
- μ΄λ₯Ό ν΅ν΄ κ°λ°μλ λ€λ₯Έ μννΈμ¨μ΄μ κΈ°λ₯μ μ¬μ¬μ©νκ±°λ, μΈλΆ μλΉμ€μμ ν΅μ μ ν΅ν΄ λ νλΆν μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€.
- APIλ νλ μννΈμ¨μ΄ κ°λ°μμ νμμ μΈ κ΅¬μ± μμλ‘ μ리 μ‘κ³ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ μ ν리μΌμ΄μ κ° ν΅ν©κ³Ό νμ μ΄ λ μ½κ² μ΄λ£¨μ΄μ§λλ€.