REST
REST (Representational State Transfer) λ μμμ μ΄λ¦μΌλ‘ ꡬλΆνμ¬ ν΄λΉ μμμ μν μ 보λ₯Ό μ£Όκ³ λ°λ λͺ¨λ κ²μ μλ―Έ νλ€.
ꡬμ±μμ
- μμ
- λͺ¨λ μμμ κ³ μ ν ID κ° μ‘΄μ¬νλ©° μ΄ μμμ Server μ μ‘΄μ¬νλ€.
 - Client λ URI λ₯Ό μ΄μ©νμ¬ μμμ μ§μ νκ³ ν΄λΉ μμμ μνμ 보μ λν μ‘°μμ Server μ μμ² νκ² λλ€.
 
 - νμ
- HTTP Method μ΄λ€.
 - GET, POST, PUT, DELETE μ κ°μ λ©μλλ₯Ό μ 곡νλ©° κ°κ°μ μλ―Έμ μνμ΄ λ€λ₯΄λ€.
 
 - νν
- Client κ° μμμ μνμ 보 μ‘°μμ μμ²νλ©΄ Server λ μ΄μ λν μλ΅μ 보λ΄κ² λλ€.
 - λλΆλΆμ JSON λ° XML λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λκ²μ΄ μΌλ°μ μ΄λ€.
 
 
νΉμ§
1. μ λνΌ μΈν°νμ΄μ€ (Uniform Interface)
- μ§μ λ URI μΈν°νμ΄μ€μμ μμ μ 곡νλ€.
 - νμ€ HTTP νλ‘ν μ½μ λ°λ₯΄λ νλ«νΌμμ μ¬μ© κ°λ₯νλ€.
 
2. 무μνμ± (Stateless)
- μνλ₯Ό κ°μ§ μμ μνμ 보 (μΈμ , μΏ ν€) λ₯Ό λ°λ‘ μ μ₯νκ±°λ κ΄λ¦¬ν νμκ° μλ€.
 - λ¨μν API μλ²λ λ€μ΄μ€λ μμ²λ§ μ²λ¦¬νμ¬ κ΅¬νμ΄ λ¨μν΄μ§κ³ μλΉμ€μ μμ λκ° λμμ§λ€.
 
3. μΊμ κ°λ₯ (Cacheable)
- νμ€ HTTP νλ‘ν μ½μ κ·Έλλ‘ μ¬μ©νλ―λ‘ μΉμμ μ¬μ©νλ―λ‘ ν΄λΉ μΈνλΌλ₯Ό κ·Έλλ‘ νμ©ν μ μλ€.
 - μΊμ μ¬μ©μΌλ‘ μΈν μλ΅μ΄ λΉ¨λΌμ§κ³ REST Server νΈλμ μ μ΄ λ°μλμ§ μκΈ° λλ¬Έμ μ 체μ μΈ μλ΅μκ° λ° μ±λ₯, μμμ ν¨μΈμ ν₯μ μν¬μ μλ€.
 
4. μ체 νν ꡬ쑰 (Self-descriptiveness)
- REST API μ λ©μΈμ§λ§ λ³΄κ³ λ μ΄λ₯Ό μ½κ² μ΄ν΄ν μ μλ μ체 νν κ΅¬μ‘°λ‘ λμ΄ μλ€λ κ² μ΄λ€.
 
5. Clinet / Server ꡬ쑰
- μμμ΄ μλ μͺ½μ Server, μμμ μμ²νλ μͺ½μ Client λ‘ κ΅¬μ±λλ€.
- Server : API λ₯Ό μ 곡νκ³ λΉμ§λμ€ λ‘μ§ μ²λ¦¬ λ° μ μ₯μ μ± μμ§λ€.
 - Client : μ¬μ©μ μΈμ¦μ΄λ context (μΈμ , λ‘κ·ΈμΈ μ 보) λ±μ μ§μ  κ΄λ¦¬νκ³ μ± μμ§λ€.
 
 - μλ‘κ°μ μμ‘΄μ±μ΄ μ€μ΄λ λ€.
 
6. κ³μΈ΅ν μμ€ν  (Layerd System)
- Client λ Server λ§ νΈμΆνλ€.
 - API Server λ μμ λΉμ§λμ€ λ‘μ§μ μννκ³ μλ¨μ 보μ, λ‘λλ°Έλ°μ±, μνΈν, μΈμ¦ λ±μ μΆκ°νμ¬ κ΅¬μ‘°μ  μ μ°μ±μ κ°μ Έκ°λ€.
 - νλ‘μ νΉμ κ²μ΄νΈμ¨μ΄μ κ°μ λ€νΈμν¬ κΈ°λ°μ μ€κ° 맀체λ₯Ό μ¬μ©ν μ μλ€.
 
REST API
REST κΈ°λ°μ μλΉμ€ API λ‘ κ΅¬νν κ² μ΄λ€.
μ€κ³
- URI λ μ λ³΄μ μμμ ννν΄μΌ νλ€.
- ꡬλΆμ ( / ) λ κ³μΈ΅κ΄κ³λ₯Ό λνλ΄λλ° μ¬μ©
 - URI λ§μ§λ§ λ¬Έμλ‘ μ¬λμ ( / ) λ₯Ό μ¬μ©νμ§ μλλ€.
 - νμ΄ν ( - ) μ URI κ°λ μ±μ λμ΄λλ° μ¬μ©
 - μΈλλ° ( _ ) λ μ¬μ©νμ§ μλλ€.
 - κ²½λ‘ μ 보λ μλ¬Έμλ‘ νλ€.
 - νμΌ νμ₯μλ ν¬ν¨νμ§ μλλ€.
 
 - Method λ μλ―Έμ μνμ΄ λ§μμΌ νλ€.
 
| Method | μν | 
|---|---|
| GET | 리μμ€λ₯Ό μμ²νλ€. | 
| POST | 리μμ€λ₯Ό μμ±νλ€. | 
| PUT | 리μμ€λ₯Ό μμ νλ€. | 
| DELETE | 리μμ€λ₯Ό μμ νλ€. |