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 λ¦¬μ†ŒμŠ€λ₯Ό μ‚­μ œν•œλ‹€.