TL

toothlessdev

πŸ“– REST API ?

REST API λŠ” REpresentational State Transfer API 둜,
μ›Ή μ„œλΉ„μŠ€μ—μ„œ ν†΅μ‹ ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

✏️ API λž€ ?

API λŠ” Application Programming Interface 둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€κ³  ν†΅ν•©ν•˜κΈ° μœ„ν•œ ν”„λ‘œν† μ½œ μž…λ‹ˆλ‹€

정보λ₯Ό μ œκ³΅ν•˜λŠ” Provider 와 μ œκ³΅λ°›λŠ” Consumer 사이 κ·œμΉ™μ΄λΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ / 컴퓨터 / μ‹œμŠ€ν…œ ... κ³Ό μƒν˜Έμž‘μš©ν•˜μ—¬ κΈ°λŠ₯을 λ§Œλ“€κ±°λ‚˜ μˆ˜ν–‰ν• λ•Œ,
API λ₯Ό 톡해 ν•΄λ‹Ή μ‹œμŠ€ν…œμ— μ›ν•˜λŠ” λ‚΄μš©, μš”μ²­μ„ μ „λ‹¬ν•˜κ³  응닡을 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

✏️ REST ?

μžμ› Resource λ₯Ό μ΄λ¦„μœΌλ‘œ ꡬ뢄 ν•˜μ—¬, ν•΄λ‹Ή μžμ›μ˜ μƒνƒœλ₯Ό μ£Όκ³  λ°›λŠ”κ²ƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

λͺ¨λ“  μžμ›μ€ κ³ μœ ν•œ μ‹λ³„μžλ₯Ό κ°€μ§€κ³  있고, 이런 μžμ›μ€ URI λ₯Ό 톡해 μ‹λ³„λ©λ‹ˆλ‹€.

REST is a set of architectural constraints, not a protocol or a standard
REST λŠ” ν”„λ‘œν† μ½œμ΄λ‚˜ ν‘œμ€€μ΄ μ•„λ‹Œ 아킀텍쳐 μ œμ•½μ‘°κ±΄μž…λ‹ˆλ‹€.

λ”°λΌμ„œ κ°œλ°œμžλŠ” REST API λ₯Ό λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆλŠ”λ°,
RESTful API λ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ λ°›μœΌλ©΄,
HTTP (JSON, HTML, XML, TEXT ... ) λ₯Ό 톡해 μ—”λ“œν¬μΈνŠΈλ‘œ μ „μ†‘λ©λ‹ˆλ‹€.

✏️ RESTful API ?

API κ°€ RESTful ν•˜λ €λ©΄

  1. μš”μ²­μ΄ HTTP λ₯Ό 톡해 κ΄€λ¦¬λ˜λŠ” Client-Server 아킀텍쳐이어야 ν•©λ‹ˆλ‹€.
  2. Client-Server 톡신 사이에 μƒνƒœλŠ” Stateless ν•΄μ•Όν•©λ‹ˆλ‹€. 즉 μš”μ²­ 사이에 Client μ •λ³΄λŠ” μ €μž₯λ˜μ§€ μ•Šκ³ , 각 μš”μ²­μ΄ λ³„λ„λ‘œ μ—°κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. (μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 의미) μ„œλ²„λŠ” 각 μš”μ²­μ„ λ…λ¦½μ μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆμ–΄ ν™•μž₯성이 ν–₯μƒλ©λ‹ˆλ‹€.
  3. Client-Server 사이에 μƒν˜Έμž‘μš©μ„ 쀄일 수 μžˆλŠ” Cacheable ν•œ 데이터이어야 ν•©λ‹ˆλ‹€.
  4. μ‹œμŠ€ν…œμ˜ 각 ꡬ성 μš”μ†Œ 간에 μΌκ΄€λœ μΈν„°νŽ˜μ΄μŠ€ Uniform Interface λ₯Ό μœ μ§€ν•΄μ•Όν•©λ‹ˆλ‹€.
    (Client-Server ν†΅μ‹ μ—μ„œ 데이터 ν˜•μ‹ 등이 μΌκ΄€λ˜κ²Œ μœ μ§€λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 의미)
  5. RESTful API 의 μ‹œμŠ€ν…œμ€ 계측화 Layered System λ˜μ–΄, λ…μ§‘μ μœΌλ‘œ κ΅¬ν˜„λ  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

πŸ“– REST API 의 κ΅¬μ„±μš”μ†Œ

✏️ Resource (μžμ›)

HTTP URI μ‹λ³„μžλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

✏️ Verb (μžμ›μ— λŒ€ν•œ ν–‰μœ„)

HTTP Method 둜 μ‹λ³„λ©λ‹ˆλ‹€. GET, POST, PUT, PATCH, DELETE κ°€ μžˆμŠ΅λ‹ˆλ‹€.

✏️ Representation (μžμ›μ— λŒ€ν•œ ν–‰μœ„μ˜ λ‚΄μš©)

HTTP Message Payload 즉 Body 둜 μ‹λ³„λ©λ‹ˆλ‹€.

❗️ 정리

REST ? : HTTP URIλ₯Ό 톡해 μžμ›μ„ λͺ…μ‹œν•˜κ³ , HTTP Method λ₯Ό 톡해 ν•΄λ‹Ή μžμ›μ— λŒ€ν•œ CRUD λ₯Ό μ μš©ν•˜λŠ” 것

❓ 의문점

Q. RESTful API λŠ” Stateless ν•΄μ•Όν•˜λŠ”λ°, 즉 μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€. κ·Έλ ‡λ‹€λ©΄ 토큰을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  Session 을 μ‚¬μš©ν•œ 인증은 RESTful API κ°€ μ•„λ‹Œκ°€ ? A. Session 을 μ‚¬μš©ν•œ 인증 방식은 Stateless ν•˜μ§€ μ•Šλ‹€. λ”°λΌμ„œ Session 보닀 Token 을 μ‚¬μš©ν•˜λŠ” 방식이 ν™•μž₯성에 μš©μ΄ν•˜λ‹€.

πŸ”— 참고자료

What Is REST API? : Rest API κ°€ 무엇인가

REST APIλž€