[HTTP] API URI 섀계와 HTTP λ©”μ„œλ“œ

2022. 3. 13. 16:32Β·WEB

πŸ“Œ API URI 섀계

βœ… API URI 섀계 μ˜ˆμ‹œ

μš”κ΅¬μ‚¬ν•­ : νšŒμ› 정보 관리 APIλ₯Ό λ§Œλ“€μ–΄λΌ.

  • νšŒμ› λͺ©λ‘ 쑰회 /read-member-list
  • νšŒμ› 쑰회 /read-member-by-id
  • νšŒμ› 등둝 /create-member
  • νšŒμ› μˆ˜μ • /update-member
  • νšŒμ› μ‚­μ œ /delete-member

→ 쒋은 URI μ„€κ³„μΌκΉŒ?

 

βœ… λ¦¬μ†ŒμŠ€μ™€ ν–‰μœ„λ₯Ό 뢄리

  • λ¨Όμ € λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” 것이 κ°€μž₯ μ€‘μš”ν•˜λ‹€.
  • λ¦¬μ†ŒμŠ€λŠ” λͺ…사, ν–‰μœ„λŠ” 동사
  • νšŒμ›μ΄λΌλŠ” κ°œλ… μžμ²΄κ°€ λ¦¬μ†ŒμŠ€μ΄λ©° λ“±λ‘ν•˜κ³ , μˆ˜μ •ν•˜κ³ , μ‘°νšŒν•˜λŠ” 것은 λͺ¨λ‘ λ°°μ œν•œλ‹€.

 

βœ… λ¦¬μ†ŒμŠ€ 식별, URI 계측 ꡬ쑰 ν™œμš© μ˜ˆμ‹œ

  • νšŒμ› λͺ©λ‘ 쑰회 /members 
  • νšŒμ› 쑰회 /members/{id} 
  • νšŒμ› 등둝 /members/{id} 
  • νšŒμ› μˆ˜μ • /members/{id} 
  • νšŒμ› μ‚­μ œ /members/{id}

계측 ꡬ쑰상 μƒμœ„λ₯Ό μ»¬λ ‰μ…˜μœΌλ‘œ 보고 λ³΅μˆ˜λ‹¨μ–΄ μ‚¬μš© ꢌμž₯ (e.g. member -> members)

 

URIλ₯Ό λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•΄μ„œ 잘 μ„€κ³„ν–ˆμœΌλ‚˜ ν–‰μœ„λ₯Ό ꡬ뢄할 ν•„μš”κ°€ 있음 → HTTP λ©”μ„œλ“œ ν™œμš©

 

πŸ“Œ HTTP μ£Όμš” λ©”μ„œλ“œ μ’…λ₯˜

βœ… GET

  • λ¦¬μ†ŒμŠ€λ₯Ό μ‘°νšŒν•  λ•Œ μ‚¬μš©
  • μ„œλ²„μ— μ „λ‹¬ν•˜κ³  싢은 λ°μ΄ν„°λŠ” query(쿼리 νŒŒλΌλ―Έν„°, 쿼리 μŠ€νŠΈλ§μ„ 톡해 전달)
  • λ©”μ„Έμ§€ 바디에도 데이터λ₯Ό 전달할 수 μžˆμ§€λ§Œ, μ§€μ›ν•˜μ§€ μ•ŠλŠ” 곳이 λ§Žμ•„μ„œ ꢌμž₯X

 

βœ… POST

  • λ©”μ„Έμ§€ λ°”λ””λ₯Ό 톡해 μ„œλ²„λ‘œ μš”μ²­ 데이터 전달
  • μ„œλ²„λŠ” μš”μ²­ 데이터λ₯Ό 처리
  • 주둜 μ „λ‹¬λœ λ°μ΄ν„°λ‘œ μ‹ κ·œ λ¦¬μ†ŒμŠ€ 등둝, ν”„λ‘œμ„ΈμŠ€ μ²˜λ¦¬μ— μ‚¬μš©
  • μ‹ κ·œ λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν•˜λŠ” 경우 응닡 메세지에 201 Created μ½”λ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ¦¬μ†ŒμŠ€κ°€ μƒμ„±λœ 경둜λ₯Ό λ³΄λ‚΄μ€Œ
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” λ¦¬μ†ŒμŠ€μ˜ URI μ£Όμ†Œλ₯Ό λͺ¨λ₯΄κ³  μš”μ²­μ΄ λ°œμƒν•˜λ©΄ μ„œλ²„μ—μ„œ URIλ₯Ό μ§€μ •ν•΄μ€Œ

 

πŸ”» μš”μ²­ 데이터 처리 μ˜ˆμ‹œ (μ„œλ²„μ— λ³€ν™” λ°œμƒ)

  • HTML 양식에 μž…λ ₯된 ν•„λ“œμ™€ 같은 데이터 블둝을 데이터 처리 ν”„λ‘œμ„ΈμŠ€μ— 제곡
    • e.g. HTML FORM에 μž…λ ₯ν•œ μ •λ³΄λ‘œ νšŒμ›κ°€μž…, μ£Όλ¬Έ λ“±μ—μ„œ μ‚¬μš©
  • κ²Œμ‹œνŒ, λΈ”λ‘œκ·Έ λ“± λ©”μ„Έμ§€ κ²Œμ‹œ
    • e.g. κ²Œμ‹œνŒ κΈ€μ“°κΈ°, λŒ“κΈ€ 달기
  • μ„œλ²„κ°€ 아직 μ‹λ³„ν•˜μ§€ μ•Šμ€ μƒˆ λ¦¬μ†ŒμŠ€ 생성
    • e.g. μ‹ κ·œ μ£Όλ¬Έ 생성
  • κΈ°μ‘΄ μžμ›μ— 데이터 μΆ”κ°€
    • e.g. ν•œ λ¬Έμ„œ 끝에 λ‚΄μš© μΆ”κ°€

POSTλŠ” ν–‰μœ„κ°€ λ”°λ‘œ μ •ν•΄μ§„ 것이 μ—†μœΌλ―€λ‘œ μš”μ²­ 데이터λ₯Ό μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ λ¦¬μ†ŒμŠ€λ§ˆλ‹€ λ”°λ‘œ μ •ν•΄μ•Ό ν•œλ‹€.

 

βœ… PUT

  • λ¦¬μ†ŒμŠ€κ°€ μ‘΄μž¬ν•˜λ©΄ μ™„μ „νžˆ λŒ€μ²΄, μ—†μœΌλ©΄ 생성
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ λ¦¬μ†ŒμŠ€ μœ„μΉ˜λ₯Ό μ•Œκ³  URIλ₯Ό 지정함 (POSTμ™€μ˜ 차이)
  • λ¦¬μ†ŒμŠ€λ₯Ό μ™„μ „νžˆ λŒ€μ²΄ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ— μ €μž₯된 λ¦¬μ†ŒμŠ€ ν•„λ“œμ— 손싀이 λ°œμƒν•  수 있음

 

βœ… Patch

  • PUTκ³Ό 달리 λ¦¬μ†ŒμŠ€μ˜ ν•„λ“œλ₯Ό λΆ€λΆ„μ μœΌλ‘œ λ³€κ²½

 

βœ… Delete

  • μ§€μ •ν•œ μœ„μΉ˜μ˜ λ¦¬μ†ŒμŠ€ 제거

 

πŸ“Œ HTTP λ©”μ„œλ“œ 속성

βœ… μ•ˆμ „(Safe Methods)

  • ν˜ΈμΆœν•΄λ„ λ¦¬μ†ŒμŠ€λ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • GET, HEADλŠ” μ•ˆμ „ν•œ λ©”μ„œλ“œ, 값을 λ³€κ²½ν•˜λŠ” λ©”μ„œλ“œμΈ POST, PUT, DELETEλŠ” μ•ˆμ „ν•œ λ©”μ„œλ“œκ°€ μ•„λ‹˜ 

 

βœ… λ©±λ“±(Idempotent Methods)

  • λͺ‡ 번 ν˜ΈμΆœν•˜λ“  κ²°κ³Όκ°€ λ˜‘κ°™λ‹€.
  • λ©±λ“± λ©”μ„œλ“œ
    • GET : ν•œ 번 μ‘°νšŒν•˜λ“ , 두 번 μ‘°νšŒν•˜λ“  같은 κ²°κ³Όκ°€ μ‘°νšŒλœλ‹€.
    • PUT : κ²°κ³Όλ₯Ό λŒ€μ²΄ν•œλ‹€. λ”°λΌμ„œ 같은 μš”μ²­μ„ μ—¬λŸ¬ 번 해도 μ΅œμ’… κ²°κ³ΌλŠ” κ°™λ‹€.
    • DELETE : κ²°κ³Όλ₯Ό μ‚­μ œν•œλ‹€. 같은 μš”μ²­μ„ μ—¬λŸ¬λ²ˆ 해도 μ‚­μ œλœ κ²°κ³ΌλŠ” κ°™λ‹€.
  • POSTλŠ” 멱등이 μ•„λ‹˜, λ‘λ²ˆ ν˜ΈμΆœν•˜λ©΄ 같은 κ²°μ œκ°€ μ€‘λ³΅ν•΄μ„œ λ°œμƒν•  수 μžˆλ‹€.
  • ν™œμš© > ν΄λΌμ΄μ–ΈνŠΈκ°€ 같은 μš”μ²­μ„ λ‹€μ‹œ 해도 λ˜λŠ”κ°€? νŒλ‹¨ κΈ°μ€€, μžλ™ 볡ꡬ λ§€μ»€λ‹ˆμ¦˜

 

βœ… μΊμ‹œ κ°€λŠ₯(Cacheable Methods)

  • 응닡 κ²°κ³Ό λ¦¬μ†ŒμŠ€λ₯Ό μΊμ‹œν•΄μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λ©”μ„œλ“œ
  • GET, HEAD, POST, PATCH μΊμ‹œ κ°€λŠ₯
  • μ‹€μ œλ‘œλŠ” GET, HEAD μ •λ„λ§Œ μ‚¬μš©, POST, PATCHλŠ” κ΅¬ν˜„μ΄ 쉽지 μ•ŠμŒ

 


κ°•μ˜ 자료

 

λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP μ›Ή κΈ°λ³Έ 지식 - μΈν”„λŸ° | κ°•μ˜

싀무에 κΌ­ ν•„μš”ν•œ HTTP 핡심 κΈ°λŠ₯κ³Ό μ˜¬λ°”λ₯Έ HTTP API 섀계 방법을 ν•™μŠ΅ν•©λ‹ˆλ‹€., - κ°•μ˜ μ†Œκ°œ | μΈν”„λŸ°...

www.inflearn.com

 

 

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'WEB' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[HTTP] HTTP λ©”μ„œλ“œ ν™œμš©  (0) 2022.03.13
[HTTP] HTTP κΈ°λ³Έ κ°œλ…κ³Ό νŠΉμ§•  (0) 2022.03.13
[HTTP] URI와 μ›Ή λΈŒλΌμš°μ € μš”μ²­ 흐름  (0) 2022.03.12
'WEB' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [HTTP] HTTP μƒνƒœμ½”λ“œ
  • [HTTP] HTTP λ©”μ„œλ“œ ν™œμš©
  • [HTTP] HTTP κΈ°λ³Έ κ°œλ…κ³Ό νŠΉμ§•
  • [HTTP] URI와 μ›Ή λΈŒλΌμš°μ € μš”μ²­ 흐름
Sue
Sue
개발 곡뢀 둜그
  • Sue
    Sue's devlog
    Sue
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 κΈ€

  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
Sue
[HTTP] API URI 섀계와 HTTP λ©”μ„œλ“œ
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”