🎯 REST API κ°œλ…κ³Ό μ˜¬λ°”λ₯Έ URL 섀계 원칙을 μ΄ν•΄ν•˜κ³  μ •λ¦¬ν•©λ‹ˆλ‹€.


πŸ“™ Today I Learned

API (Application Programming Interface)

λ‹€λ₯Έ μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ„ μ€‘κ°„μ—μ„œ μ—°κ²°ν•˜κ³  데이터λ₯Ό 주고받을 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

μΈν„°νŽ˜μ΄μŠ€(interface)
μ„œλ‘œ λ‹€λ₯Έ μ‹œμŠ€ν…œμ΄ μ†Œν†΅ν•  수 μžˆλ„λ‘ μ€‘μž¬ν•˜λŠ” μ—­ν• μž…λ‹ˆλ‹€.


REST API

REST 원칙을 λ”°λ₯΄λŠ” APIμž…λ‹ˆλ‹€.

REST (Representational State Transfer)
μ›Ήμ—μ„œ 데이터λ₯Ό μ£Όκ³ λ°›λŠ” 약속(κ·œμΉ™)μž…λ‹ˆλ‹€.


μ˜¬λ°”λ₯Έ REST API URL κ·œμΉ™

  • μ†Œλ¬Έμž μ‚¬μš©

  • 언더바 _ λŒ€μ‹  ν•˜μ΄ν”ˆ - μ‚¬μš©

  • URL 끝에 /(μŠ¬λž˜μ‹œ) λ„£μ§€ μ•ŠκΈ°

  • 파일 ν™•μž₯자 λ„£μ§€ μ•ŠκΈ°

  • λ¦¬μ†ŒμŠ€λͺ…은 λ³΅μˆ˜ν˜•μœΌλ‘œ μ‚¬μš©(/products βœ…, /product ❌)

  • ν–‰μœ„ 포함 ❌ (β†’ GET, POST둜 ꡬ뢄 )


RESTful API

REST 원칙을 μ™„λ²½ν•˜κ²Œ 지킨 API μž…λ‹ˆλ‹€.

  • CRUD에 맞게 GET, POST, PUT, DELETE μ‚¬μš©ν•©λ‹ˆλ‹€.
  • λ¬΄μƒνƒœ(Stateless) 원칙(μš”μ²­ 간에 μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠμŒ)을 λ°˜λ“œμ‹œ λ”°λ¦…λ‹ˆλ‹€.

CRUD
데이터λ₯Ό λ‹€λ£¨λŠ” 4κ°€μ§€ κΈ°λ³Έ κΈ°λŠ₯으둜 Create(생성), Read(쑰회), Update(μˆ˜μ •), Delete(μ‚­μ œ)의 μ•žκΈ€μžλ₯Ό λ”°μ„œ CRUD라고 ν•©λ‹ˆλ‹€.


HTTP (HyperText Transfer Protocol)

μ›Ήμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ(μ‚¬μš©μž)와 μ„œλ²„(컴퓨터)κ°€ 데이터λ₯Ό μ£Όκ³ λ°›λŠ” ν”„λ‘œν† μ½œ(약속)μž…λ‹ˆλ‹€.

πŸ’‘ μ›Ήμ—μ„œ μ£Όκ³ λ°›λŠ” λͺ¨λ“  λ°μ΄ν„°λŠ” HTTP ν”„λ‘œν† μ½œμ„ 톡해 μ „μ†‘λ©λ‹ˆλ‹€.


HTTP Method

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— μ–΄λ–€ μš”μ²­μ„ 보낼지 κ²°μ •ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

HTTP Methodμ—­ν• URL μ˜ˆμ‹œ
GET데이터 쑰회/products (전체 μƒν’ˆ 쑰회)
/products/{id} (νŠΉμ • μƒν’ˆ 쑰회)
POST데이터 μΆ”κ°€/products (μƒˆ μƒν’ˆ μΆ”κ°€)
PUT데이터 전체 μˆ˜μ •/products/{id} (μƒν’ˆ 전체 μˆ˜μ •)
PATCH데이터 λΆ€λΆ„ μˆ˜μ •/products/{id} (μƒν’ˆ 일뢀 μˆ˜μ •)
DELETE데이터 μ‚­μ œ/products/{id} (μƒν’ˆ μ‚­μ œ)

URL (Uniform Resource Locator)
인터넷 μƒμ—μ„œ μ›ΉνŽ˜μ΄μ§€κ°€ μ–΄λ””μžˆλŠ”μ§€ μœ„μΉ˜λ₯Ό μ•Œλ €μ£ΌλŠ” 것뿐 μ•„λ‹ˆλΌ μ„œλ²„μ— μš”μ²­μ„ 보내 데이터 연산을 μˆ˜ν–‰ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

πŸ“Œ μ™œ POST μš”μ²­μ—λŠ” IDκ°€ ν•„μš”ν•˜μ§€ μ•Šμ„κΉŒ?

  • μƒˆ 데이터λ₯Ό μΆ”κ°€ν•  λ•Œ μžλ™μœΌλ‘œ IDλ₯Ό μƒμ„±ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„κ°€ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€λ₯Ό λ§Œλ“€κ³ , μžλ™μœΌλ‘œ IDλ₯Ό λΆ€μ—¬ν•©λ‹ˆλ‹€.
  • μƒμ„±λœ IDλŠ” POST μš”μ²­μ˜ μ‘λ‹΅μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

🧐 였늘의 발견

  • REST API URL을 섀계할 λ•Œ GET, POST 같은 HTTP λ©”μ„œλ“œλ₯Ό ν™œμš©ν•΄μ•Ό ν•œλ‹€λŠ” 점을 λ°°μ› μŠ΅λ‹ˆλ‹€.
  • POST μš”μ²­μ—λŠ” idκ°€ ν•„μš”ν•˜μ§€ μ•Šκ³  λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μžλ™μœΌλ‘œ μƒμ„±ν•΄μ£ΌλŠ” κΈ°λŠ₯을 μ œκ³΅ν•΄μ€€λ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€.

πŸ–‹οΈ ν•œ 쀄 회고

API의 μ’…λ₯˜μ— μ •λ¦¬ν•˜λ©΄μ„œ RESTful API κ·œμΉ™μ„ 더 μ‹ κ²½ μ¨μ„œ μ§€μΌœμ•Όκ² λ‹€κ³  λŠκΌˆμŠ΅λ‹ˆλ‹€!

profile
🌱개발 기둝μž₯

0개의 λŒ“κΈ€