API
λμμ© νλ‘κ·Έλ¨(μ ν리μΌμ΄μ )
μμμ΄μ 체μ
λνλ‘κ·Έλλ° μΈμ΄
κ° μ 곡νλ κΈ°λ₯μ μ μ΄ν μ μκ² λ§λμΈν°νμ΄μ€
λ₯Ό λ»νλ€. μ£Όλ‘ νμΌ μ μ΄, μ°½ μ μ΄, νμ μ²λ¦¬, λ¬Έμ μ μ΄ λ±μ μν μΈν°νμ΄μ€λ₯Ό μ 곡νλ€.
μΉ API
λ μΉ μ ν리μΌμ΄μ κ°λ°μ ν λ ν΄λΌμ΄μΈνΈμ μλ², μ ν리μΌμ΄μ κ³Ό μ ν리μΌμ΄μ λ± μλ‘ μμ²κ³Ό μλ΅μ μ£Όκ³ λ°κΈ° μν΄μ μ μν APIμ΄λ€.
π μλ²
μ λ°μ΄ν°λ² μ΄μ€
μμ 리μμ€μ μ κ·Ό
ν μ μκ² ν΄μ€λ€. APIλ μ κ·Ό κΆνμ΄ μΈκ°λ μ¬λμκ²λ§ μλ²μ λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν μ μκ²νλ€.
π λͺ¨λ μμ²
κ³Ό μλ΅
μ νμ€ν
νλ€. μ νν°μ΄λ μΌμ±ν°μ΄λ μκ΄μμ΄ λμΌν APIλ₯Ό μ¬μ©νκΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈμ μμ²κ³Ό μλ²μ μλ΅μ νλμ APIλ‘ νμ€ννλ€.
REST API(Representational State Transfer)
λ μΉμμμ μ¬μ©λλ μ¬λ¬ 리μμ€λ₯ΌHTTP URI
λ‘ νννκ³ , ν΄λΉ 리μμ€μ λν νμλ₯ΌHTTP Method
λ‘ μ μνλ μν€ν μ³ μ€νμΌμ΄μ λ°©μμλ§νλ€.
π μ΄μ κ³Ό λ¬λ¦¬ μ΅κ·Όμλ λ©ν° νλ«νΌ, λ©ν° λλ°μ΄μ€ μλλ‘ λμ΄μ μμ΄μ μ¬λ¬ μΉ λΈλΌμ°μ μ μμ΄ν°, μλλ‘μ΄λ μ ν리μΌμ΄μ
κ³Όμ ν΅μ μ λμν μ μμ΄μΌ νλ€.
π μ΄λ° μλμ λ§μΆ° κ°κ° λμνλ μλ‘μ΄ μλ²λ₯Ό λ§λ€κΈ°λ³΄λ€ λ²μ©μ μΌλ‘ μ¬μ©μ±μ 보μ₯νλ μλ² λμμΈμ΄ νμνκ² λμ΄ Rest APIκ° κ°λ°λμλ€.
π μμ(Resource)
: HTTP URI
π μμμ λν νμ(Verb)
: Http Method
Method | μν |
---|---|
POST | μλ‘μ΄ μμμ μΆκ°ν λ μ¬μ©νλ€. |
GET | μμμ λ°μμ€κΈ°λ§ ν λ μ¬μ©νλ€. |
PUT | μ‘΄μ¬νλ μμμ λ³κ²½ν λ μ¬μ©νλ€. |
PATCH | ν μμμ λ°μ΄ν°λ₯Ό λΆλΆμ μΌλ‘ λ³κ²½ν λ μ¬μ©νλ€. |
DELETE | μμμ μμ ν λ μ¬μ©νλ€. |
π νν(Representation of Resource)
: HTTP Message Pay Load
π ν΄λΌμ΄μΈνΈ/μλ² κ΅¬μ‘°
:
π 무μνμ±(Stateless)
:
π μΊμ μ²λ¦¬ κ°λ₯(Cacheable)
:
π μ체 νν ꡬ쑰(self-descriptiveness)
:
π κ³μΈ΅ν(Layered System)
:
π μ λνΌ μΈν°νμ΄μ€(Uniform Interface)
:
π νμ€μ΄ μ‘΄μ¬νμ§ μλλ€.
π μ¬μ©ν μ μλ λ©μλκ° CRUD 4κ°μ§ λ°μ μλ€.
π HTTPμ μλΉν μμ‘΄μ μ΄λ€. RESTλ μ€κ³ μ리μ΄κΈ° λλ¬Έμ HTTPμλ μκ΄μμ΄ λ€λ₯Έ νλ‘ν μ½μμλ ꡬνν μ μκΈ°λ νμ§λ§ μμ°μ€λ¬μ΄ κ°λ°μ΄ νλ€λ€. λ€λ§ RESTλ₯Ό μ¬μ©νλ μ΄μ κ° λλΆλΆμ μλΉμ€κ° μΉμΌλ‘ ν΅ν©λλ μν©μ΄κΈ°μ ν° λ¨μ μ΄ μλλ€.
π RESTλ URI, HTTPλ₯Ό μ΄μ©ν μν€ν
μ³λ§ λ°©λ²μ λν λ΄μ©λ§μ λ΄κ³ μλ€. 보μκ³Ό ν΅μ κ·μ½ μ μ±
κ°μ κ²μ μ ν λ€λ£¨μ§ μλλ€. λ°λΌμ κ°λ°μλ ν΅μ κ³Ό μ μ±
μ λν μ€κ³μ ꡬνμ λ맑μμ μ§νν΄μΌ νλ€.
π ꡬν λΈλΌμ°μ κ° μ§μν΄μ£Όμ§ λͺ»νλ λΆλΆμ΄ μ‘΄μ¬νλ€. (PUT, DELETEλ₯Ό μ¬μ©νμ§ λͺ»ν¨/PushStateλ₯Ό μ§μνμ§ μμ)
π URIλ λͺ
μ¬λ₯Ό μ¬μ©νλ€.
π μ¬λμ(/)λ‘ κ³μΈ΅ κ΄κ³λ₯Ό νννλ€.
π URIμ λ§μ§λ§μλ μ¬λμ(/)λ₯Ό λΆμ΄μ§ μλλ€.
π URIλ μλ¬Έμλ‘λ§ κ΅¬μ±νλ€.
π κ°λ
μ±μ΄ λ¨μ΄μ§λ κ²½μ° μΈλλ°(_) λμ νμ΄ν(-)μ μ¬μ©νλ€.
RESTfulνλ€λ, RESTμ μ리λ₯Ό λ°λ₯΄λ μμ€ν μ μλ―Ένλ€. νμ§λ§ RESTλ₯Ό μ¬μ©νλ€ νμ¬ λͺ¨λκ° RESTfulν κ²μ μλλ©°, REST API μ€κ³ κ·μΉμ μ¬λ°λ₯΄κ² μ§ν¨ μμ€ν μ RESTfulνλ€ λ§ν μ μλ€.
λ°λΌμ λͺ¨λ CRUD κΈ°λ₯μ POSTλ‘ μ²λ¦¬ νλ API νΉμ URI κ·μΉμ μ¬λ°λ₯΄κ² μ§ν€μ§ μμ APIλ REST APIμ μ€κ³ κ·μΉμ μ¬λ°λ₯΄κ² μ§ν€μ§ λͺ»ν μμ€ν μ REST APIλ₯Ό μ¬μ©νμ§λ§ RESTfulνμ§ λͺ»ν μμ€ν μ΄λΌκ³ ν μ μλ€.