[REST] 🎯 REST APIκ°€ λ­”κ°€μš”?

Mec.D's BlogΒ·2022λ…„ 6μ›” 6일
0
post-thumbnail

πŸ“‹ 기술 λ©΄μ ‘ ν™ˆ λ°”λ‘œκ°€κΈ°


⬛ κ°œλ…

πŸ’‘ REST (REpresental State Transfer)

μžμ›μ„ μ •μ˜ν•˜κ³  μžμ›μ— λŒ€ν•œ μ£Όμ†Œλ₯Ό ν• λ‹Ήν•˜λŠ” λ„€νŠΈμ›Œν¬ μ•„μΉ΄ν…μ²˜ μ›λ¦¬λ“€μ˜ μ§‘ν•©μž…λ‹ˆλ‹€.

κ·ΈλŒ€λ‘œ λ²ˆμ—­ν•˜λ©΄ μžμ›μ˜ ν‘œν˜„μ— μ˜ν•œ μƒνƒœ μ „λ‹¬μ΄λΌλŠ” λœ»μž…λ‹ˆλ‹€.

πŸ’‘ RESTful API

RESTν•œ μ•„ν‚€ν…μ²˜μ˜ μ œμ•½μ‘°κ±΄μ„ μ€€μˆ˜ν•΄μ„œ λ§Œλ“  ν”„λ‘œκ·Έλž˜λ° μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§ν•©λ‹ˆλ‹€.


⬛ ꡬ성 μš”μ†Œ

πŸ’‘ μžμ› (Resource)

μ„œλ²„μΈ‘μ— μ €μž₯돼 μžˆλŠ” κ°€κ³΅λ˜μ§€ μ•Šμ€ 정보 μžμ›μ„ λ§ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ ν˜•νƒœ (format) 둜 κ°€κ³΅λ˜μ–΄ ν‘œν˜„λ  수 μžˆμŠ΅λ‹ˆλ‹€.
HTTP Request Line의 URI에 μžμ›μ˜ μ‹λ³„μžκ°€ λ‹΄κΉλ‹ˆλ‹€.

  • URL은 κ°œλ³„ λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” μ£Όμ†Œμž…λ‹ˆλ‹€.

πŸ’‘ ν‘œν˜„ (Representation)

νŠΉμ • μ‹œμ μ— νŠΉμ • 포맷으둜 κ°€κ³΅λœ λ¦¬μ†ŒμŠ€λ₯Ό λ§ν•©λ‹ˆλ‹€.
HTTP Header와 Payload에 ν‘œν˜„ 정보가 λ‹΄κΉλ‹ˆλ‹€.

ex) text/html, application/json, text/xml, images/jpg λ“±

  • λͺ¨λ“  HTTP Payloadμ—λŠ” Resourceκ°€ μ•„λ‹Œ Representation이 λ‹΄κΉλ‹ˆλ‹€.

πŸ’‘ ν–‰μœ„ (Verb)

νŠΉμ • λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ μš”μ²­ν•  λ™μž‘μ˜ μ’…λ₯˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
HTTP Request Line의 Method에 ν–‰μœ„ 정보가 λ‹΄κΉλ‹ˆλ‹€.

ex) POST, GET, PUT, PATCH, DELETE λ“±


⬛ RESTfulν•œ URI ν‘œν˜„λ²•

βœ…λͺ…μΉ­μ„€λͺ…
βœ…Collectionλ¦¬μ†ŒμŠ€λ“€μ˜ λ¬ΆμŒμž…λ‹ˆλ‹€.
μ„œλ²„κ°€ λ¦¬μ†ŒμŠ€μ˜ μ‹λ³„μžλ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.
볡수둜 ν‘œν˜„ν•©λ‹ˆλ‹€.
βœ…DocumentCollection λ‚΄μ˜ 단일 λ¦¬μ†ŒμŠ€μž…λ‹ˆλ‹€.
숫자 λ˜λŠ” λ‹¨μˆ˜μ˜ 문자λ₯Ό μ‹λ³„μžλ‘œ κ°–μŠ΅λ‹ˆλ‹€.
ControllerHTTP Method둜 ν‘œν˜„ν•˜μ§€ λͺ»ν•˜λŠ” λ™μž‘μ„ ν‘œν˜„ν•©λ‹ˆλ‹€.
Storeλ¦¬μ†ŒμŠ€ λ¬ΆμŒμž…λ‹ˆλ‹€.
ν΄λΌμ΄μ–ΈνŠΈκ°€ λ¦¬μ†ŒμŠ€μ˜ μ‹λ³„μžλ₯Ό κ²°μ •ν•©λ‹ˆλ‹€.
볡수둜 ν‘œν˜„ν•©λ‹ˆλ‹€.
  • Collection POST μš”μ²­ μ˜ˆμ‹œ : /comments
  • Store POST μš”μ²­ μ˜ˆμ‹œ : /comments/{commentId}

⬛ μž‘μ„±λ²•

  1. ⬛ μš”μ²­ URL은 λͺ…μ‚¬λ‘œ ν‘œν˜„ν•©λ‹ˆλ‹€.
  2. βœ…οΈ λ„μ–΄μ“°κΈ°λŠ” kebab-case둜 μž‘μ„±ν•©λ‹ˆλ‹€.
  3. βœ…οΈ Collection은 λ³΅μˆ˜ν˜• λͺ…사λ₯Ό μ”λ‹ˆλ‹€.
  4. βœ…οΈ ControllerλŠ” 동사λ₯Ό μ”λ‹ˆλ‹€.
  5. ⬛ 파일 ν™•μž₯자λ₯Ό 뢙이지 μ•ŠμŠ΅λ‹ˆλ‹€.
  6. βœ…οΈ μ†Œλ¬Έμžλ‘œ μž‘μ„±ν•©λ‹ˆλ‹€.
  7. ⬛ λ§ˆμ§€λ§‰μ— /λ₯Ό 뢙이지 μ•ŠμŠ΅λ‹ˆλ‹€.
profile
기술둜 더 λ‚˜μ€ 미래λ₯Ό λ””μžμΈν•˜λŠ” 개발자 MEC:D μž…λ‹ˆλ‹€

0개의 λŒ“κΈ€