03. HTTP λ©”μ„œλ“œ

HTTP λ©”μ‹œμ§€μ˜ μ‹œμž‘ 라인에 데이터 μ‘°μž‘ ν–‰μœ„λ₯Ό λͺ…μ‹œν•˜μ—¬ 보낼 수 μžˆλ‹€. 이것을 HTTP λ©”μ„œλ“œ 라고 ν•œλ‹€. GET, POST, PUT, PATCH, DELETE λ₯Ό 주둜 μ‚¬μš©ν•œλ‹€.

λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κ²Œ 된 μ΄μœ λŠ” 효율적으둜 URIλ₯Ό μ„€κ³„ν•˜κΈ° μœ„ν•¨μ΄λΌ ν•  수 μžˆλ‹€. URI μ—λŠ” μ ‘κ·Όν•˜λ €λŠ” μžμ›μ˜ 정보 (νšŒμ›, κ²Œμ‹œνŒ λ“± λ¦¬μ†ŒμŠ€)만 λͺ…μ‹œν•˜κ³ , κ·Έ μžμ›μ„ λŒ€μƒμœΌλ‘œ ν•˜λŠ” ν–‰μœ„λŠ” λ©”μ„œλ“œμ—μ„œ μ •μ˜ν•˜λ©΄ κΉ”λ”ν•œ URI 섀계가 κ°€λŠ₯해진닀.

πŸ“§ Β  01. HTTP λ©”μ‹œμ§€

  • λ©”μ„œλ“œλ₯Ό μ•Œμ•„λ³΄κΈ° 전에, HTTP λ©”μ‹œμ§€μ— λŒ€ν•΄ λ¨Όμ € μ•Œμ•„λ³΄μž.

좜처: κΉ€μ˜ν•œμ˜ λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP (μΈν”„λŸ°)

ꡬ쑰ꡬ성
start-lineHTTP λ©”μ„œλ“œ, μš”μ²­ λŒ€μƒ, HTTP 버전
headerfield-name, content-type, content-length λ“±
empty line무쑰건 ν•œ 쀄을 λ„μš΄λ‹€.
message bodyμ‹€μ œ 전솑할 데이터λ₯Ό λ„£λŠ”λ‹€.
  • start-line : μ„œλ²„κ°€ μˆ˜ν–‰ν•΄μ•Ό ν•  λ™μž‘μ„ μ§€μ •ν•˜κ³ , μš”μ²­ λŒ€μƒ(경둜)을 μ§€μ •ν•œλ‹€. 응닡 μ‹œμ—λŠ” μš”μ²­μ— λŒ€ν•œ 성곡, μ‹€νŒ¨ μ—¬λΆ€λ₯Ό μƒνƒœ μ½”λ“œ (200, 400, 500) 둜 λ‹΄μ•„μ„œ 보낸닀.
  • header : HTTP 전솑에 ν•„μš”ν•œ λͺ¨λ“  λΆ€κ°€ 정보λ₯Ό 보낸닀. λ©”μ‹œμ§€ λ°”λ””μ˜ νƒ€μž…(ν…μŠ€νŠΈμΈμ§€ json인지), 크기, 인증, λΈŒλΌμš°μ € 정보, μΊμ‹œ 관리 정보 λ“± μ—¬λŸ¬κ°€μ§€κ°€ μžˆλ‹€.

πŸ“§ Β  02. GET

GET /search?q=hello&hl=ko
  • λ¦¬μ†ŒμŠ€λ₯Ό μ‘°νšŒν•œλ‹€.
  • μ„œλ²„μ— μ „λ‹¬ν•˜κ³  싢은 λ°μ΄ν„°λŠ” 쿼리 νŒŒλΌλ―Έν„°λ₯Ό ν†΅ν•΄μ„œ μ „λ‹¬ν•œλ‹€.
  • λ©”μ‹œμ§€ λ°”λ””λ₯Ό ν†΅ν•΄μ„œ 전달해도 λ˜μ§€λ§Œ, μ§€μ›ν•˜μ§€ μ•ŠλŠ” 곳이 λ§Žμ•„μ„œ ꢌμž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.

πŸ“§ Β  03. POST

POST /members HTTP/1.1
Content-Type: application/json

{
   "username" : "young",
   "age" : 20
}
  • μš”μ²­ 데이터λ₯Ό μ²˜λ¦¬ν•œλ‹€.
  • μƒˆ λ¦¬μ†ŒμŠ€λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ 값을 λ³€κ²½ν•˜λŠ” λ“± μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.

πŸ“§ Β  04. PUT

PUT /members/100 HTTP/1.1
Content-type: application/json

{
    "username" : "old",
    "age" : 50
}
  • λ¦¬μ†ŒμŠ€λ₯Ό μ™„μ „νžˆ λŒ€μ²΄ν•œλ‹€. 데이터가 있으면 μ‚­μ œ ν›„ λ“±λ‘ν•˜κ³ , μ—†μœΌλ©΄ μƒμ„±ν•œλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•œλ‹€. μœ„ 예제 μ½”λ“œλ₯Ό 보면 ν΄λΌμ΄μ–ΈνŠΈκ°€ members 의 100번째 μœ μ €λ₯Ό μ•Œμ•„μ•Ό ν•΄λ‹Ή μœ μ €λ₯Ό λŒ€μ²΄ν•˜λŠ” μš”μ²­μ„ 보낼 수 μžˆμŒμ„ 이해할 수 μžˆλ‹€.
  • λ§Œμ•½ μš”μ²­ 데이터가 age만 μžˆλ‹€κ³  ν•˜λ”λΌλ„, λ¦¬μ†ŒμŠ€λ₯Ό μ™„μ „νžˆ λŒ€μ²΄ν•˜κΈ° λ•Œλ¬Έμ— 100번째 μœ μ €μ˜ μ •λ³΄λŠ” username 은 사라지고 age 만 등둝(λŒ€μ²΄)될 것이닀.

πŸ“§ Β  05. PATCH

PATCH /members/100 HTTP/1.1
Content-Type: application-json

{
   "age" : 50
}
  • λ¦¬μ†ŒμŠ€λ₯Ό λΆ€λΆ„ λ³€κ²½ν•œλ‹€.
  • λ¦¬μ†ŒμŠ€λ₯Ό μ™„μ „ λŒ€μ²΄ν•΄λ²„λ¦¬λŠ” PUT κΈ°λŠ₯을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄ 졜근 λ“±μž₯ν•œ λ©”μ„œλ“œμ΄λ‹€.

πŸ“§ Β  06. DELETE

DELETE /members/100 HTTP/1.1
Host: localhost:8080
  • λ¦¬μ†ŒμŠ€λ₯Ό μ œκ±°ν•œλ‹€.

πŸ“§ Β  07. λ©”μ„œλ“œμ˜ 속성

  • μœ„ λ©”μ„œλ“œλ“€μ€ κ°œλ³„ 속성에 차이가 μžˆλ‹€.
  • μ£Όμš”ν•œ 차이점은 μ•„λž˜ 3가지가 μžˆλ‹€.
λ©”μ„œλ“œμ•ˆμ „λ©±λ“±μΊμ‹œκ°€λŠ₯
GET⭕️⭕️⭕️
POSTβŒβŒβ­•οΈ
PUTβŒβ­•οΈβŒ
PATCHβŒβŒβ­•οΈ
DELETEβŒβ­•οΈβŒ
  • μ•ˆμ „ : ν˜ΈμΆœν•΄λ„ λ¦¬μ†ŒμŠ€λ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • λ©±λ“± : μ—¬λŸ¬λ²ˆ ν˜ΈμΆœν•΄λ„ 같은 κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€.
  • μΊμ‹œκ°€λŠ₯ : 응닡 κ²°κ³Ό λ¦¬μ†ŒμŠ€λ₯Ό μΊμ‹œν•΄μ„œ μ‚¬μš©ν•΄λ„ λ˜λŠ”κ°€.