REST API
REST API
π« REST API
𫧠API
- Application Programming Interface
- μμ© νλ‘κ·Έλ¨μμ μ¬μ©ν μ μλλ‘ λ€λ₯Έ μμ© νλ‘κ·Έλ¨μ μ μ΄ν μ μκ» λ§λ μΈν°νμ΄μ€
APIλ₯Ό μ¬μ©νλ©΄ λ΄λΆ ꡬν λ‘μ§μ μμ§ λͺ»ν΄λ μ μλμ΄ μλ κΈ°λ₯μ μ½κ² μ¬μ©ν μ μμ
- μ¬κΈ°μ μΈν°νμ΄μ€λ μ΄λ€ μ₯μΉκ° μ 보λ₯Ό μ£Όκ³ λ°λ λ°©λ²μ λ§νλ€.
- i.e. λ§μ°μ€, ν€λ³΄λ, ν°μΉν¨λ
𫧠REST
- Representational State Transfer, μμ μν μ λ¬?
- μμμ μ΄λ¦μΌλ‘ ꡬλΆνμ¬ μμμ μνλ₯Ό κ΅ννλ κ²μ μλ―Έ
μλ²μ ν΄λΌμ΄μΈνΈ ν΅μ λ°©μ μ€ νλ
HTTP URI
λ₯Ό ν΅ν΄Resource
μ λͺ μνκ³ ,HTTP Method
λ₯Ό ν΅ν΄ ν΄λΉResource
μ λνCRUD Operation
μ μ μ©νλ κ²- μμμ κ΅ννλ κ²
- κ·Έ κ²°κ³Όλ₯Ό
HTTP Status Code
λ‘ μλ΅νλ κ²
𫧠Resource
Collection
: 볡μμ μμμ κ°λ¦¬ν€λ μμhttps://api.example.com/topics
Element
: λ¨μμ μμμ κ°λ¦¬ν€λ μμhttps://api.example.com/topics/1234
https://api.example.com/topics/rest-api
𫧠Method
- CRUD Operation
- Create :
POST
- Read :
GET
- Update :
PUT
,PATCH
- Delete :
DELETE
- Create :
𫧠REST νΉμ§
- Server-Client ꡬ쑰
- μμμ΄ μλ μͺ½μ΄ Server, μμμ μμ²νλ μͺ½μ΄ Client
- μλ²μ ν΄λΌμ΄μΈνΈκ° λ 립μ μΌλ‘ λΆλ¦¬λμ΄ μμ΄μΌ ν¨
- Stateless
- μμ² κ°μ ν΄λΌμ΄μΈνΈ μ λ³΄κ° μλ²μ μ μ₯λμ΄μλ μλ¨ (κ·μΉ)
- μλ²λ κ° μμ²μ μμ ν λ 립μ μΌλ‘ μ²λ¦¬ν΄μΌ ν¨
- μ΄μ μμ²μ΄ λ€μ μμ²μ μν₯μ μ£Όλ©΄ μλ¨
- Cacheable
- ν΄λΌμ΄μΈνΈλ μλ΅μ μΊμν μ μμ΄μΌ ν¨
- HTTP νλ‘ν μ½μ κ·Έλλ‘ μ¬μ©νκΈ° λλ¬Έμ HTTPμ νΉμ§μΈ μΊμ± κΈ°λ₯μ μ¬μ©ν μ μμ
- λλμ μμ²μ ν¨μ¨μ μΌλ‘ μ²λ¦¬νκΈ° μν΄ μΊμλ₯Ό μ¬μ©
- ν΄λΌμ΄μΈνΈλ μλ΅μ μΊμν μ μμ΄μΌ ν¨
- κ³μΈ΅ν (Layered System)
- ν΄λΌμ΄μΈνΈλ μλ²μ ꡬμ±κ³Ό μκ΄μμ΄ REST API μλ²λ‘ μμ²
- μλ²λ λ€μ€ κ³μΈ΅μΌλ‘ ꡬμ±λ μ μμ (λ‘λ λ°Έλ°μ±, 보μ μμ, μΊμ λ±)
- Code on Demand (Optional)
- μμ²μ λ°μΌλ©΄ μλ²μμ ν΄λΌμ΄μΈνΈλ‘ μ½λ λλ μ€ν¬λ¦½νΈ(λ‘μ§)μ μ λ¬νμ¬ ν΄λΌμ΄μΈνΈ κΈ°λ₯ νμ₯
- μΈν°νμ΄μ€ μΌκ΄μ± (Uniform Interface)
- μ λ³΄κ° νμ€ νμμΌλ‘ μ μ‘λκΈ° μν΄ κ΅¬μ± μμκ° ν΅ν© μΈν°νμ΄μ€λ₯Ό μ 곡
- HTTP νλ‘ν μ½μ λ°λ₯΄λ λͺ¨λ νλ«νΌμμ μ¬μ© κ°λ₯νκ²λ μ€κ³
𫧠REST μ₯μ
- HTTP νμ€ νλ‘ν μ½μ μ¬μ©νλ λͺ¨λ νλ«νΌμμ νΈνκ°λ₯
- μλ²μ ν΄λΌμ΄μΈνΈμ μν μ λͺ ννκ² λΆλ¦¬
- μ¬λ¬ μλΉμ€ μ€κ³μμ μκΈΈ μ μλ λ¬Έμ λ₯Ό μ΅μν
𫧠REST API
- REST μν€ν μ²μ 쑰건μ μ€μνλ μ΄ν리μΌμ΄μ νλ‘κ·Έλλ° μΈν°νμ΄μ€
RESTful
: REST μν€ν μ²λ₯Ό ꡬννλ μΉ μλΉμ€
𫧠REST API νΉμ§
- REST κΈ°λ°μΌλ‘ μμ€ν μ λΆμ°νμ¬ νμ₯μ±κ³Ό μ¬μ¬μ©μ±μ λμ
- HTTP νμ€μ λ°λ₯΄κ³ μμ΄ μ¬λ¬ νλ‘κ·Έλλ° μΈμ΄λ‘ ꡬνν μ μμ
𫧠REST API μ€κ³ κ·μΉ
- μΉκΈ°λ°μ REST APIλ₯Ό μ€κ³ν κ²½μ°μλ URIλ₯Ό ν΅ν΄ μμμ ννν΄μΌ ν¨
https://api.example.com/v1/users/1234
- Resource : users
- Resource ID : 1234
- β μμμ λν μ‘°μμ
Method
λ₯Ό ν΅ν΄ ννν΄μΌ ν¨URI
μ νμκ° λ€μ΄κ°λ©΄ μλ¨URI
λ μμμ νν
- HEADERλ₯Ό ν΅ν΄ CRUDλ₯Ό νννμ¬ λμμ μμ²ν΄μΌ ν¨
- λ©μΈμ§λ₯Ό ν΅ν 리μμ€ μ‘°μ
- HEADERλ₯Ό ν΅ν΄ content-typeμ μ§μ νμ¬ λ°μ΄ν°λ₯Ό μ λ¬
- λνμ νμμΌλ‘λ HTML, XML, JSON, TEXT λ±μ΄ μμ
- μ΄κ±΄
REST
κ° μ μνλ κ²μ΄ μλ
- μ΄κ±΄
- λ¬Έλ², νκΈ°λ²
- URIμλ μλ¬Έμλ₯Ό μ¬μ©
- Resourceμ μ΄λ¦μ΄λ URIκ° κΈΈμ΄μ§ κ²½μ° νμ΄ν(-)μ μ¬μ©
- μΈλλ°(_)λ μ¬μ©νμ§ μμ
- νμΌ νμ₯μλ URIμ ν¬ν¨νμ§ μμ
π« λ©λͺ¨
𫧠참κ³
μ΄ κΈ°μ¬λ μ μκΆμμ CC BY 4.0 λΌμ΄μΌμ€λ₯Ό λ°λ¦
λλ€.