REST APIμ νμ
β’
Representational State Transfer
β’
μΉμ μ₯μ μ μ΅λν νμ©ν μ μλ μν€ν
μ²λ‘μ REST λ°ν
APIλ?
β’
μ ν리μΌμ΄μ
νλ‘κ·Έλλ° μΈν°νμ΄μ€
β’
λ€λ₯Έ μννΈμ¨μ΄ μμ€ν
κ³Ό ν΅μ νκΈ° μν΄ λ°λΌμΌ νλ κ·μΉ μ μ
β’
μΉ API - ν΄λΌμ΄μΈνΈμ μΉ λ¦¬μμ€ μ¬μ΄μ κ²μ΄νΈμ¨μ΄
μΉμμ μ 보μ μ‘μΈμ€νλ €λ μ¬μ©μ ( μ¬λ or μννΈμ¨μ΄ μμ€ν
)
λ€μν μ ν리μΌμ΄μ
μ΄ ν΄λΌμ΄μΈνΈμκ² μ 곡νλ μ 보 (μ΄λ―Έμ§, λμμ λ± λͺ¨λ μ νμ λ°μ΄ν°)
RESTλ 무μμΈκ°μ?
β’
API μλ λ°©μμ λν 쑰건μ λΆκ³Όνλ μννΈμ¨μ΄ μν€ν
μ²
β’
μΈν°λ·κ³Ό κ°μ 볡μ‘ν λ€νΈμν¬μμ ν΅μ μ κ΄λ¦¬νκΈ° μν μ§μΉ¨
β’
λκ·λͺ¨μ κ³ μ±λ₯ ν΅μ μ μμ μ μΌλ‘ μ§μ
HTTP URI(Uniform Resorce Identifier)λ₯Ό ν΅ν΄ μμ(Resource)μ λͺ
μνκ³
HTTP Method(POST, GET, PUT, DELETE, PATCH λ±)μ ν΅ν΄
ν΄λΉ μμ(URI)μ λν CRUD Operationμ μ μ©νλ κ²
CRUD Operation
β’
CRUDλ λλΆλΆμ μ»΄ν¨ν° μννΈμ¨μ΄κ° κ°μ§λ κΈ°λ³Έμ μΈ λ°μ΄ν° μ²λ¦¬ κΈ°λ₯μ λ¬Άμ΄μ μΌμ»«λ λ§
Create | λ°μ΄ν° μμ± (POST) |
Read | λ°μ΄ν° μ‘°ν (GET) |
Update | λ°μ΄ν° μμ (PUT, PATCH) |
Delete | λ°μ΄ν° μμ (DELETE) |
β’
RESTful
β¦
RESTμ μ리λ₯Ό λ°λ₯΄λ μμ€ν
β¦
RESTλ₯Ό μ¬μ©νλ€κ³ λͺ¨λκ° RESTfulν κ²μ μλ
β¦
REST API μ€κ³ κ·μΉμ μ¬λ°λ₯΄κ² μ§ν¨ μμ€ν
β¦
RESTful νμ§ λͺ»ν κ²½μ°
βͺ
CRUD κΈ°λ₯μ λͺ¨λ POSTλ‘λ§ μ²λ¦¬νλ API
βͺ
routeμ resource, id μΈμ μ λ³΄λ€ λ€μ΄κ°λ κ²½μ°
β’
REST APIμ RESTful APIλΌλ μ©μ΄λ κ°μ μλ―Έλ‘ μ¬μ©ν μ μμ
REST κ΅¬μ± μμ
β’
μμ(Resource) : HTTP URI
β’
μμμ λν νμ(Verb) : HTTP METHOD
β’
μμμ λν νμμ λ΄μ©(νν)(Representations) : HTTP Message Pay Load
Pay Load : μ μ‘λλ λ°μ΄ν°
REST API νΈμΆ λ¨κ³
1.
ν΄λΌμ΄μΈνΈκ° μλ²μ μμ²μ μ μ‘
κ³ μ 리μμ€ μλ³μ + λ©μλ + HTTP ν€λ
(API λ¬Έμμ λ°λΌ μλ²κ° μ΄ν΄νλ λ°©μμΌλ‘ μμ² νμ μ§μ )
2.
μλ²κ° ν΄λΌμ΄μΈνΈλ₯Ό μΈμ¦ β κΆνμ΄ ν΄λΌμ΄μΈνΈμ μλμ§ νμΈ
3.
μλ²κ° μμ²μ μμ νκ³ λ΄λΆμ μΌλ‘ μ²λ¦¬
4.
μλ²κ° ν΄λΌμ΄μΈνΈμ μλ΅ λ°ν
μμ² μ±κ³΅ μ¬λΆ + μμ²ν λͺ¨λ μ 보
(μννμμ€ + λ©μμ§ λ³Έλ¬Έ + ν€λ)
REST μν€ν
μ² μ€νμΌμ μμΉ (REST API νΉμ§)
κ· μΌν μΈν°νμ΄μ€ (Uniform Interface)
URIλ‘ μ§μ ν 리μμ€μ λν μ‘°μμ ν΅μΌλκ³ νμ μ μΈ μΈν°νμ΄μ€λ‘ μννλ μν€ν
μ² μ€νμΌ
무μν (Stateless)
μμ
μ μν μν μ 보λ₯Ό λ°λ‘ μ μ₯νκ³ κ΄λ¦¬νμ§ μμ
- μΈμ
μ 보λ μΏ ν€ μ 보λ₯Ό λ³λλ‘ μ μ₯νκ³ κ΄λ¦¬νμ§ μκΈ° λλ¬Έμ API μλ²λ λ€μ΄μ€λ μμ²λ§μ λ¨μ μ²λ¦¬
κ³μΈ΅ν μμ€ν
(Layered System)
REST μλ²λ λ€μ€ κ³μΈ΅μΌλ‘ ꡬμ±λ μ μμΌλ©° 보μ λ±μ κ³μΈ΅μ μΆκ°ν΄ ꡬ쑰 μμ μ μ°μ±μ λ μ μμ
μΊμ κ°λ₯μ± (Cache)
HTTPλΌλ κΈ°μ‘΄ μΉ νμ€μ κ·Έλλ‘ μ¬μ©νκΈ° λλ¬Έμ HTTPμ μΊμ± κΈ°λ₯ μ μ©
μλ²-ν΄λΌμ΄μΈνΈ ꡬ쑰 (Server-Client)
μλ²μ ν΄λΌμ΄μΈνΈκ° ꡬλΆ
μ¨λ맨λ μ½λ (Code-On-Demand)
μλ²λ‘λΆν° μ€ν¬λ¦½νΈλ₯Ό λ°μμ ν΄λΌμ΄μΈνΈμμ μ€ννλ κ²
λ°λμ μΆ©μ‘±ν νμ X
REST API μ€κ³ μμ
Bad Example http://ssafy.com/Running
Good Example http://ssafy.com/run
JavaScript
볡μ¬
Bad Example http://ssafy.com/test/
Good Example http://ssafy.com/test
JavaScript
볡μ¬
Bad Example http://ssafy.com/test_blog
Good Example http://ssafy.com/test-blog
JavaScript
볡μ¬
Bad Example http://ssafy.com/photo.jpg
Good Example http://ssafy.com/photo
JavaScript
볡μ¬
Bad Example http://ssafy.com/delete-post/1
Good Example http://ssafy.com/post/1
HTML
볡μ¬
RESTful APIλ₯Ό μ¬μ©νλ©΄ μ΄λ€ μ΄μ μ΄ μλμ?
μμ λ΄μ©μ λ€μ μ 리ν κ² (λμ΄κ°)
νμ₯μ±
β’
REST APIλ₯Ό ꡬννλ μμ€ν
μ RESTκ° ν΄λΌμ΄μΈνΈ-μλ² μνΈ μμ©μ μ΅μ ννκΈ° λλ¬Έμ ν¨μ¨μ μΌλ‘ ν¬κΈ° μ‘°μ κ°λ₯
β’
무μνλ μλ²κ° κ³Όκ±° ν΄λΌμ΄μΈνΈ μμ² μ 보λ₯Ό μ μ§ν νμκ° μκΈ° λλ¬Έμ μλ² λ‘λλ₯Ό μ κ±°
무μν
β’
μ κ΄λ¦¬λ μΊμ±μ μΌλΆ ν΄λΌμ΄μΈνΈ-μλ² μνΈ μμ©μ λΆλΆμ μΌλ‘ λλ μμ ν μ κ±°
β μ΄λ¬ν λͺ¨λ κΈ°λ₯μ μ±λ₯μ μ νμν€λ ν΅μ λ³λͺ© νμμ μΌμΌν€μ§ μμΌλ©΄μ νμ₯μ±μ μ§μ
μ μ°μ±
β’
RESTful μΉ μλΉμ€λ μμ ν ν΄λΌμ΄μΈνΈ-μλ² λΆλ¦¬λ₯Ό μ§μ
κ° λΆλΆμ΄ λ
립μ μΌλ‘ λ°μ ν μ μλλ‘ λ€μν μλ² κ΅¬μ± μμλ₯Ό λ¨μννκ³ λΆλ¦¬
β’
μλ² μ ν리μΌμ΄μ
μ νλ«νΌ λλ κΈ°μ λ³κ²½μ ν΄λΌμ΄μΈνΈ μ ν리μΌμ΄μ
μ μν₯ X
β’
μ ν리μΌμ΄μ
ν¨μλ₯Ό κ³μΈ΅ννλ κΈ°λ₯μ μ μ°μ±μ λμ± ν₯μμν΄
(μ) κ°λ°μλ μ ν리μΌμ΄μ
λ‘μ§μ λ€μ μμ±νμ§ μκ³ λ λ°μ΄ν°λ² μ΄μ€ κ³μΈ΅μ λ³κ²½ν μ μμ
λ
립μ±
β’
REST APIλ μ¬μ©λλ κΈ°μ κ³Ό λ
립μ
β’
API μ€κ³μ μν₯μ μ£Όμ§ μκ³ λ€μν νλ‘κ·Έλλ° μΈμ΄λ‘ ν΄λΌμ΄μΈνΈ λ° μλ² μ ν리μΌμ΄μ
μ λͺ¨λ μμ±ν μ μμ
β’
ν΅μ μ μν₯μ μ£Όμ§ μκ³ μμͺ½μ κΈ°λ³Έ κΈ°μ μ λ³κ²½ν μ μμ
REST API μ₯μ
1.
Open API λ₯Ό μ 곡νκΈ° μ½λ€
2.
λ©ν°νλ«νΌ μ§μ λ° μ°λμ΄ μ©μ΄νλ€.
3.
μνλ νμ
μΌλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ μ μλ€.
4.
κΈ°μ‘΄ μΉ μΈνλΌ(HTTP)λ₯Ό κ·Έλλ‘ μ¬μ©ν μ μλ€.
REST API λ¨μ
1.
μ¬μ©ν μ μλ λ©μλκ° μ νμ μ΄λ€.
2.
λΆμ°νκ²½μλ λΆμ ν©νλ€.**
rest api λ μ λμ (μΌλμΌλ‘ λ
립μ μΌλ‘ μ°κ²°νλ λ°©μ) λͺ¨λΈμ κ°μ νκΈ° λλ¬Έμ λ μ΄μμ λμμΌλ‘νλ λΆμ°νκ²½μλ λΆμ ν©
3.
HTTP ν΅μ λͺ¨λΈμ λν΄μλ§ μ§μνλ€.
+λ¨μ μ΄μ , url&uri, restapi μν€ν
μ²
λ€λ₯Έμ¬λ μμ½λ³Έ