REST μ μ
Representational State Transfer μ μ½μλ‘ μμμ μ΄λ¦μΌλ‘ ꡬλΆνμ¬ ν΄λΉ μμμ μνλ₯Ό μ£Όκ³ λ°λ λͺ¨λ κ²μ μλ―Ένλ€.
REST ꡬμ±
- μμ (RESOURCE) - URI
- νμ (Verb) - HTTP Method
- νν (Representations)
REST νΉμ§
- URI μμ μ§μ ν 리μμ€μ λν μ‘°μμ ν΅μΌλκ³ νμ μ μΈ μΈν°νμ΄μ€λ‘ μννλ€.
2. Stateless (무μνμ±)
- μΈμ
μ 보λ μΏ ν€ μ 보μ λν μνμ λ³΄κ° μλ€.
3. Cacheable (μΊμ κ°λ₯)
- HTTP νλ‘ν μ½μ λ°λ₯΄κΈ° λλ¬Έμ HTTP νλ‘ν μ½μ μΊμκΈ°λ₯μ μ¬μ©ν μ μλ€. (Last-Modified, E-Tag)
4. Self-descriptiveness (μ체 νν ꡬ쑰)
- REST API λ©μμ§λ§ λ³΄κ³ λ°λ‘ μ΄ν΄ ν μ μλ μ체 νν ꡬ쑰μ΄λ€.
5. Server - Client ꡬ쑰
- Server λ API, Client λ μ¬μ©μ μΈμ¦μ΄λ 컨ν
μ€νΈλ₯Ό κ΄λ¦¬νμ¬ μλ‘ κ°μ μμ‘΄μ±μ΄ μ€μ΄λ λ€.
6. Layered System (κ³μΈ΅ν ꡬ쑰)
- λ€μ€ κ³μΈ΅μΌλ‘ ꡬμ±λ μ μμΌλ©° 보μ, λ‘λ λ°Έλ°μ±, μνΈν κ³μΈ΅μ μΆκ°ν΄ ꡬ쑰μμ μ μ°μ±μ λ μ μκ³ PROXY, κ²μ΄νΈμ¨μ΄ κ°μ λ€νΈμν¬ κΈ°λ°μ μ€κ°λ§€μ²΄λ₯Ό μ¬μ©ν μ μκ² νλ€.
REST μ₯μ
- HTTP νλ‘ν μ½μ μΈνλΌλ₯Ό λ°λ₯΄κΈ° λλ¬Έμ REST API λ₯Ό μ¬μ©νκΈ° μν΄ λ³λμ μΈνλΌλ₯Ό ꡬμΆν νμκ° μλ€.
- HTTP νλ‘ν μ½μ λ°λ₯΄λ μ¬λ¬ κ°μ§ νλ«νΌμμ μ¬μ©ν μ μλ€.
- μλνλ λ©μμ§κ° λͺ
ννλ€.
- μλ²μ ν΄λΌμ΄μΈνΈμ μν μ΄ λͺ
ννκ² λΆλ¦¬λλ€.
REST λ¨μ
- νμ€μ΄ μλ€.
- HTTP Method μ κ°μκ° μ νμ μ΄λ€.
- ꡬν λΈλΌμ°μ μμ μννκ² λμνμ§ μλ κ²½μ°κ° μλ€.
REST API
REST λ₯Ό κΈ°λ°μΌλ‘ μλΉμ€ API λ₯Ό ꡬνν κ²
- API : Application Programming Interface μ μ½μλ‘ λ°μ΄ν°μ κΈ°λ₯μ μ§ν©μ μ 곡νμ¬ μ»΄ν¨ν° νλ‘κ·Έλ¨κ° μνΈμμ©μ μ΄μ§νλ©°, μλ‘ μ 보λ₯Ό κ΅ν κ°λ₯ νλλ‘ νλ κ²
RESTful API?
REST API λ₯Ό μ 곡νλ μΉ μλΉμ€λ₯Ό μ§μΉνλ μ©μ΄
REST API λμμΈ κ°μ΄λ
- URIλ μ 보μ μμμ ννν΄μΌ νλ€.
- μμμ λν νμλ HTTP Method(GET, POST, PUT, DELETE) λ₯Ό μ¬μ©νμ¬ νννλ€.
1
2
| GET /members/delete/1 (x)
DELETE /members/1 (o)
|
- URI μ μ 보μ μμμ΄ μλ νμκ° λ€μ΄μκΈ° λλ¬Έμ 1λ²μ λΆμ μ νλ€.
- HTTP Method νννκ³ μ νλ νμμ λ§μ§ μκΈ° λλ¬Έμ 2λ²μ λΆμ μ νλ€.
HTTP Method μ μ’
λ₯
- GET : 리μμ€λ₯Ό μ‘°ννλ κ²½μ° μ¬μ©
- POST : μλ‘μ΄ λ¦¬μμ€λ₯Ό μΆκ°νλ κ²½μ° μ¬μ©
- PUT : 리μμ€λ₯Ό λͺ¨λ μμ νλ κ²½μ° μ¬μ©
- PATCH : 리μμ€λ₯Ό μΌλΆ μμ νλ κ²½μ° μ¬μ©
- DELETE : 리μμ€λ₯Ό μμ νλ κ²½μ° μ¬μ©
URI μ€κ³ μ μ£Όμμ¬ν
- μ¬λμ(/) ꡬλΆμλ κ³μΈ΅ κ΄κ³λ₯Ό λνλ΄λ κ²½μ°μλ§ μ¬μ©νλ€.
- λ§μ§λ§μ μ¬λμ(/)λ₯Ό ν¬ν¨νμ§ μλλ€.
- νμ΄ν(-)μ κ°λ
μ±μ λμ΄λ κ²½μ° μ¬μ©νλ€.
- μΈλλ°(-)λ μ¬μ©νμ§ μλλ€.
- URI κ²½λ‘μ λλ¬Έμλ μ ν©νμ§ μλ€.
- νμΌ νμ₯μλ URI μ ν¬ν¨νμ§ μλλ€.
Colllectionκ³Ό Document
- 컬λ μ
(Colllection) : λ¬Έμλ€μ μ§ν©, κ°μ²΄λ€μ μ§ν©
- λνλ¨ΌνΈ (Document) : λ¬Έμ, ν κ°μ²΄
1
| http://restapi.example.com/sports/soccer
|
- sports μ 컬λ μ
μ΄λ€. (컬λ μ
μ 볡μ λͺ
μ¬λ₯Ό μ¬μ©)
- soccer λ λνλ¨ΌνΈμ΄λ€.
HTTP μλ΅ μ½λ
2xx
- 200 : ν΄λΌμ΄μΈνΈμ μμ²μ μ μμ μΌλ‘ μνν κ²½μ°
- 201 : ν΄λΌμ΄μΈνΈκ° 리μμ€ μμ±μ μμ²νμ¬ μμ±μ μ μμ μΌλ‘ μνν κ²½μ°
4xx
- 400 : ν΄λΌμ΄μΈνΈμ μμ²μ΄ λΆμ μ ν κ²½μ°
- 401 : ν΄λΌμ΄μΈνΈκ° μΈμ¦λμ§ μλ μνμμ μμ²ν κ²½μ°
- 403 : μλ΅νκ³ μΆμ§ μλ 리μμ€λ₯Ό μμ²νλ κ²½μ°
- 405 : μμ²ν 리μμ€μ Method κ° λ¦¬μμ€μμ μ¬μ©μ΄ λΆκ°λ₯ν κ²½μ°
3xx
- 301 : μμ²ν 리μμ€μ λν URIκ° λ³κ²½λμμ λ μ¬μ©νλ
5xx
- 500 : μλ²μ λ¬Έμ κ° μκΈ΄ κ²½μ° μ¬μ©
μΆμ²