Session 8. HTTP

κΉ€λ―Όμž¬Β·2021λ…„ 8μ›” 26일
0

TIL, WeCode, CourseΒ 

λͺ©λ‘ 보기
24/48
post-thumbnail

*πŸ”Study Keyword :

  • βœ…HTTP의 1>πŸ”‘Request, Response ꡬ쑰와 2>πŸ”‘HTTP의 νŠΉμ§• stateless & 3>πŸ—οΈHTTP Request Methods μ’…λ₯˜μ™€ 각각의 차이λ₯Ό μ•Œκ³  4>πŸ—οΈResponse Status Codes에 무엇이 μžˆλŠ”μ§€κΉŒμ§€ μ•Œμ•„λ³΄μž!!!!!

1. 톡신과 HTTP

  • πŸ“‘HTTPλŠ” 톡신을 ν•˜κΈ° μœ„ν•΄ λ§Œλ“  κ·œμ•½μ΄λ‹€.

1 . HyperTextλž€ λ¬Έμ„œμ™€ λ¬Έμ„œκ°€ 링크둜 μ—°κ²°λ˜μ–΄ 있음 μ˜λ―Έν•˜κ³ 
2. TransperλŠ” HTML둜 λ§Œλ“  μ›ΉνŽ˜μ΄μ§€ λ¬Έμ„œ(파일)을 λ³΄λ‚Έλ‹€λŠ” 의미이며
3. ProtocolλŠ” 컴퓨터 μ‚¬μ΄μ—μ„œ μ–΄λ–»κ²Œ HTML νŒŒμΌμ„ μ£Όκ³  받을 λ•Œμ˜ μ†Œν†΅μ„ μœ„ν•΄μ„œ λ§Œλ“  λ°©μ‹μ΄μž 약속을 μ˜λ―Έν•œλ‹€
=> λ‚΄κ°€ λ§Œλ“  HTML νŒŒμΌμ„ λ‹€λ₯Έ μ‚¬μš©μžμ˜ μ»΄ν“¨ν„°λ‘œ μ „μ†‘ν•˜λŠ” 과정에 λŒ€ν•΄μ„œ μ•½μ†λœ κ·œμ•½μ„ μ˜λ―Έν•œλ‹€.

  • μΈμŠ€νƒ€κ·Έλž¨μ— μ ‘μ†ν•΄μ„œ μ‚¬μš©μžκ°€ μ’‹μ•„μš” λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ μ–΄λ–€ 일이 μƒκΈΈκΉŒ?!

1> ν΄λΌλ¦¬μ–ΈνŠΈ μ‚¬μ΄λ“œμ—μ„œ μ’‹μ•„μš” λ²„νŠΌμ— λŒ€ν•œ μš”μ²­μ„ μ„œλ²„μ— 보낸닀
2> μΈμŠ€νƒ€κ·Έλž¨μ˜ μ„œλ²„μΈ‘μ— ν•΄λ‹Ή μš”μ²­μ„ λ°›κ³  그에 λŒ€ν•œ 응닡을 ν•΄μ€€λ‹€.
=> μ΄λ ‡κ²Œ μš”μ²­κ³Ό 응닡을 보낼 λ•Œ HTTP 의 약속에 맞게 μ„œλ‘œμ—κ²Œ μ „λ‹¬λœλ‹€.

  • πŸŽ†μš”μ²­κ³Ό 응닡

    μ†Œν†΅μ˜ 핡심은 λ°”λ‘œ πŸŽ†μš”μ²­κ³Ό 응닡이닀. μ»΄ν“¨ν„°μ˜ μ†Œν†΅ λ°©μ‹μ—λŠ” 메세지 ν˜•μ‹μœΌλ‘œ πŸŽ†μš”μ²­ν•˜κ³  응닡을 ν•œλ‹€.

2. Stateless

  • HTTP κ°œλ³„ 톡신은 λͺ¨λ‘ λ…λ¦½μ μ΄μ–΄μ„œ κ³Όκ±° HTTP 톡신 κ²°κ³Όλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠλŠ”λ° μ΄λŠ” μƒνƒœκ°€ μ—†μŒκ³Ό 것과 같은 것이닀.
  • λ§Œμ•½ Netflix에 접속해 λ‘œκ·ΈμΈμ„ ν•˜κ³ μžλŠ” μš”μ²­μ„ 보내면 λ„·ν”Œλ¦­μŠ€ μ„œλ²„μ—μ„  μ–΄λ–€ μœ μ €κ°€ λ‘œκ·ΈμΈμ„ ν–ˆλŠ”μ§€μ— λŒ€ν•œ 과거의 μš”μ²­μ„ μ €μž₯ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.
  • λ”°λΌμ„œ μ‚¬μš©μžλŠ” λ‘œκ·ΈμΈν–ˆμ—ˆλŠ”λ°λ„ λ‹€μ‹œ λ‘œκ·ΈμΈν•˜λΌλŠ” 응닡을 받을 것이닀.
  • μ΄λŠ” HTTPκ°€ λͺ¨λ‘ 독립이라 과거의 HTTP 톡신 μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠκΈ°λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” ν˜„μƒμ΄λ‹€.

  • λ”°λΌμ„œ 맀 ν†΅μ‹ λ§ˆλ‹€ 사전에 ν•„μš”ν•œ λͺ¨λ“  정보λ₯Ό λ‹΄μ•„μ„œ μš”μ²­μ„ λ³΄λ‚΄μ•Όν•˜κ³  μ—¬κΈ°μ„œ λ§ν•˜λŠ” μ •λ³΄λŠ” 인증/인과(EX> λ‚˜ λ‘œκ·ΈμΈν–ˆμ–΄! λ“±)같은 사전 μ •λ³΄λ‘œ 이λ₯Ό λ‹΄μ•„μ„œ μ„œλ²„μ—κ²Œ 전달해쀀닀
  • πŸ€·β€β™‚οΈ?! λ³΅μž‘ν•˜κ²Œ 이런 과정을 맀번 κ±°μΉœλ‹€κ³ ?!

  • πŸ™†β€β™€οΈ μ§€κΈˆμ˜ 상황을 관객이 야ꡬμž₯에 λ†€λŸ¬κ°„ 상황에 λΉ„μœ ν•΄λ³΄μž!

  • 야ꡬμž₯을 μ„œλ²„λΌ λΉ„μœ ν•˜λ©΄ μ΄μš©μžλŠ” 야ꡬμž₯ μž…κ΅¬μ— λ“€μ–΄κ°ˆ λ•Œλ§ˆλ‹€ 항상 μŠ€νƒœν”„μ—κ²Œ ν‹°μΌ“ 검사λ₯Ό λ°›μ•„μ•Ό 야ꡬμž₯에 μž…μž₯ν•  수 μžˆλ‹€.

  • μ‚¬μš©μžκ°€ μ„œλ²„μ— λ“€μ–΄κ°ˆ λ•Œλ§ˆλ‹€ μ΄λŸ¬ν•œ 검사과정을 맀번 거치고 μ΄λ•Œ 야ꡬμž₯μ—μ„œ λ°›μ•„μ„œ μž…μž₯ν•  수 μžˆλŠ” ν‹°μΌ“μ˜ κ°œλ…μ„ μ›Ή 상에선 πŸ”–ν† ν°μ΄λΌκ³  λΆ€λ₯Έλ‹€.

  • πŸŽ†μš”μ²­κ³Ό 응닡 κ²°κ΅­ λͺ¨λ‘ πŸŽ‡λ©”μ„Έμ§€μ˜ ν˜•μ‹μ„ 가지고 μžˆλ‹€.

1) πŸŽ‡μ‘λ‹΅ λ©”μ„Έμ§€μ˜ ꡬ쑰

1> Start Line - 2>Headers - 3>Body

1> μš”μ²­μ˜ 첫번째 쀄(Start Line)

  • HTTP method - μš”μ²­μ΄ μ˜λ„ν•œ μ•‘μ…˜(μ–΄λ–€ μš”μ²­μ„ ν•  건지)을 μ •μ˜ν•œλ‹€.
  • Request target - μ„œλ²„μ— λ„λ‹¬ν•΄μ•Όν•˜λŠ” λ°μ΄ν„°μ˜ μœ„μΉ˜, 즉 μš”μ²­μ΄ μ „μ†‘λ˜λŠ” λͺ©ν‘œ url을 적어쀀닀.
  • HTTP version - HTTP 버전
    • EX>GET/login HTTP/1.1

2> μš”μ²­μ˜ λ‘λ²ˆμ§Έμ€„ (Headers), μš”μ²­μ˜ 메타 데이터λ₯Ό λ‹΄λŠ” λΆ€λΆ„

  • 호슀트, User-agent, μš”μ²­ νƒ€μž…, μš”μ²­ 길이 등을 {key: value} ν˜•νƒœλ‘œ λ‹΄λŠ”λ‹€.

3> μš”μ²­μ˜ μ‹€μ œ λ‚΄μš©(Body)

  • μš”μ²­μ˜ λ‘˜ μ§Έ μ€„μ˜ HeaderλŠ” κ²°κ΅­ μ…‹ μ§Έ μ€„μ˜ Body에 λŒ€ν•œ μš”μ²­ 정보이닀.
  • 이 메타 λ°μ΄ν„°μ˜ μ‹€μ œ λ‚΄μš©μ„ body 내뢀에 λ‹΄μ•„μ€€λ‹€.

-μš”μ²­ 메세지 μ‹€μ œ 예

  • 1> Start Line 2>Headers 3>Bodyκ°€ ν•¨κ»˜ λ‹΄κ²¨μžˆλ‹€.

2) πŸŽ‡μ‘λ‹΅ λ©”μ„Έμ§€μ˜ ꡬ쑰

1> Status Line, 2> Headers, 3> Body

1> 응닡은 Start line λŒ€μ‹  Status Line 즉 μš”μ²­μ— λŒ€ν•΄μ„œ μ–΄λ–€ μ‘λ‹΅μ˜ μƒνƒœ(Status)κ°€ λ‚˜μ™”λŠ”μ§€λ₯Ό λ‹΄μ•„μ€€λ‹€.

  • HTTP version
  • Status code의 응닡 μƒνƒœμ½”λ“œλ₯Ό λ‹΄μ•„μ€€λ‹€,
    • EX> 404 μ‹€νŒ¨, 200 성곡
  • Status TextλŠ” 응닡 μƒνƒœλ₯Ό κ°„λž΅ν•˜κ²Œ μ„€λͺ…ν•˜λŠ” ν…μŠ€νŠΈκ°€ λ‹΄κΈ΄λ‹€
    • Not Fonud, Success λ“±
    • Status TextλŠ” HTTP에 200을 λ„£μœΌλ©΄ 그에 λŒ€μ‘ν•˜λŠ” ν…μŠ€νŠΈλ₯Ό μžλ™μœΌλ‘œ 리턴해쀀닀.
    • μ΄λŸ¬ν•œ Status Text λ©”μ„Έμ§€λŠ” μ„œλ²„μ—μ„œ κ°œλ°œμžλ“€μ΄ μ μ–΄μ„œ λ³΄λ‚΄μ£ΌλŠ” κ²½μš°κ°€ 더 λ§Žλ‹€.

2>μ‘λ‹΅μ˜ 메타 데이터λ₯Ό 담은 λΆ€λΆ„ 은 λ™μΌν•˜λ‹€.

3> 응닡해쀄 데이터 μ—­μ‹œ Body에 λ‹΄κΈ΄λ‹€. μš”μ²­ λ©”μ†Œλ“œμ— λ”°λΌμ„œ body λ‚΄λΆ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€.

보톡 Bodyμ—” JSON ν˜•νƒœλ‘œ λ‹΄κ²¨μ„œ 보내진닀.

3. http Request λ©”μ„œλ“œ μ’…λ₯˜

  • μš”μ²­μ˜ 첫번 μ§Έ μ€„μ—λŠ” http λ©”μ†Œλ“œκ°€ actino에 λ“€μ–΄κ°€κ³  μžμ£Όμ“°λŠ” μ’…λ₯˜λŠ” λ‹€μŒμ˜ 3κ°œμ΄λ‹€.

  • http Request λ©”μ„œλ“œλ“€μ€ 클라이언츠 μΈ‘μ—μ„œ λ°›μ•„λ“€μ΄λŠ” μš©μ–΄μ˜ 관점이닀.

.

  1. GET, 데이터λ₯Ό λ°›μ•„μ˜€κΈ°λ§Œν•  λ•Œ μ‚¬μš©
  • ex> μ›ΉνŽ˜μ΄μ§€μ— μ ‘μ†ν•΄μ„œ ν•„μš”ν•œ 데이터λ₯Ό 뢈러올 λ•Œ μ‚¬μš©
  • ex> μž₯λ°”κ΅¬λ‹ˆμ— μƒν’ˆμ„ λ„£κ³  GET λ©”μ†Œλ“œλ‘œ μš”μ²­μ„ 보내면 λ¦¬ν€˜μŠ€νŠΈλ₯Ό 보낸 것을 μ„œλ²„κ°€ 성곡 ν˜Ήμ€ μ‹€νŒ¨ ν–ˆλ‹€λŠ” 메세지λ₯Ό μ‘λ‹΅μœΌλ‘œ 보낸닀.
  1. POST, 데이터λ₯Ό λ°›μ•„μ™€μ„œ 데이터λ₯Ό 생성 및 μˆ˜μ •μ„ ν•΄μ•Όν•  λ•Œ μ‚¬μš©
  • body에 λ‹΄λŠ” λ‚΄μš©μ΄ 핡심이닀
  • ex> μž₯λ°”κ΅¬λ‹ˆμ— μƒν’ˆμ„ 5κ°œμ—μ„œ 10개둜 늘리면 이λ₯Ό μΆ”κ°€ν•΄μ„œ λ‹΄μ•„μ£ΌλŠ”λ° post methodλ₯Ό λ‹΄μ•„μ„œ DB에 μƒν’ˆμ˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ„£μ–΄μ€€λ‹€.
  • ex> μž₯λ°”κ΅¬λ‹ˆμ˜ 또 λ‹€λ₯Έ μƒν’ˆμ„ λ‹΄κΈ° λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ Frontμ—μ„œ 크둬이 μž₯λ°”κ΅¬λ‹ˆ λ²„νŠΌμ„ λˆŒλ €μŒμ„ 인지해 Back에 포슀트 μš”μ²­μ„ 보낸닀
  1. DELETE, μ„œλ²„μ— μ €μž₯된 νŠΉμ •ν•œ 데이터λ₯Ό μ‚­μ œν•  λ•Œ μ‚¬μš©
  • DeleteλŠ” μž₯λ°”κ΅¬λ‹ˆμ˜ μ‚­μ œλ²„νŠΌμ„ λˆ„λ₯΄λ©΄ delete λ©”μ„œλ“œλ‘œ μš”μ²­μ„ 보내 μ„œλ²„κ°€ μ‚­μ œμ— λŒ€ν•œ μƒνƒœμ— λŒ€ν•œ 응닡을 보내쀀닀.

4> Response Status Codes

  • μ„œλ²„μ—μ„œλŠ” ν΄λΌμ΄μ–ΈνŠΈ 츑의 μš”μ²­μ— λŒ€ν•œ 응닡을 ν•΄μ£ΌλŠ”λ° 이λ₯Ό status code의 ν˜•νƒœλ‘œ 보내쀀닀.
  • 200λŒ€ 번호의 μ½”λ“œλŠ” λ™μž‘μ΄ 잘 μˆ˜ν–‰λ˜μ—ˆμ„ λ•Œ status codeλ₯Ό 보내쀀닀.
    • 200은 GET이 μž˜λ˜μ—ˆλ‹€κ³  λ§ν•΄μ£ΌλŠ” μ½”λ“œ
    • 201 createdλŠ” DBμ—μ„œ dataκ°€ μƒμ„±λ˜μ—ˆλ‹€κ³  λ§ν•΄μ£ΌλŠ” μ½”λ“œμ˜ 의미λ₯Ό 내포
    • μ—„κ²©ν•œ μ„œλ²„λŠ” 204λ₯Ό 보톡 보내면 데이터가 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 메세지λ₯Ό 보내쀀닀.
  • 400λŒ€ λ²ˆν˜ΈλŠ” 무언가 μ—λŸ¬κ°€ λ°œμƒν•˜ 클라이언츠 츑이 잘λͺ»λœ μš”μ²­μ„ λ°›μ•˜μ„ λ•Œμ˜ λ¦¬ν„΄ν•΄μ£ΌλŠ”status code이닀.
    • 401, 둜그인 μ•ˆν•œ μ‚¬λžŒμ΄ μ ‘κ·Όν•˜λ €ν•  λ•Œ,
    • 403, λ‘œκ·ΈμΈν–ˆμ§€λ§Œ κΆŒν•œμ΄ μ—†λŠ” μ‚¬λžŒμ΄ μš”μ²­,
      • μ΄λŸ¬ν•œ 처리λ₯Ό μ„œλ²„μ—μ„œ if문으둜 경우의 수λ₯Ό 걸러 status codeλ₯Ό 보낸닀.
  • 500λŒ€ 번호- μ„œλ²„μ—μ„œ μ—λŸ¬κ°€ 났을 λ•Œμ˜ Status Code둜 μ„œλ²„ μͺ½μ—μ„œ 500λŒ€ λ²ˆν˜Έκ°€ λ‚˜μ˜€μ§€ μ•Šλ„λ‘ λͺ¨λ“  경우의 수λ₯Ό λ‚˜λˆ μ„œ λ‘œμ§μ„ μ§œμ„œ λ³΄λ‚΄μ€˜μ•Όν•œλ‹€.

TIPπŸ’‘)

  • 개발자 λ„κ΅¬μ˜ λ„€νŠΈμ›Œν¬λ₯Ό 잘 ν™œμš©ν•΄μ„œ μ–΄λ–€ μš”μ²­κ³Ό 응닡이 μ£Όκ³  λ°›κ³  μžˆλŠ”μ§€ 잘 λ³Ό 쀄 μ•Œμ•„μ•Όν•œλ‹€.
  • 개발자 λ„κ΅¬μ˜ λ„€νŠΈμ›Œν¬μ—μ„œλŠ” μš”μ²­κ³Ό 응닡λ₯Ό ν•œ λ²ˆμ— 보여쀀닀.

*πŸ’‘conclusion

  • HTTP의 κ°œλ…κ³Ό μš”μ²­ μ‘λ‹΅μ˜ 과정에 λŒ€ν•΄μ„œ κ°œλ…μ„ μ •λ¦¬ν•˜μž
  • Statelss의 νŠΉμ§•μ΄ HTTPμ—μ„œ μ–΄λ–»κ²Œ λ‚˜νƒ€λ‚˜λŠ”μ§€μ— λŒ€ν•΄μ„œ μ•Œκ³ μžˆμž
  • λ¦¬ν€˜μŠ€νŠΈ λ©”μ†Œλ“œμ— μžˆλŠ” GET, POST, DELETEκ°€ μ–΄λ–»κ²Œ μ‚¬μš©λ˜λ©° 차이가 무엇인지λ₯Ό μΈμ§€ν•˜μž
  • μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ 츑의 μš”μ²­μ— 응닡에 λŒ€ν•΄ λ³΄λ‚΄μ£ΌλŠ” status codeκ°€ 무엇이며 200, 400, 500λŒ€κ°€ μ–΄λ–€ 의미λ₯Ό 가지고 μžˆλŠ”μ§€ κΉŒμ§€

#πŸ“‘Study Source

  • WeCode κ°•μ˜ 쀑 λ°±μ—”λ“œ 고수 μ†Œν—Œλ‹˜ κ°•μ˜ 쀑:>
profile
자기 μ‹ λ’°μ˜ νž˜μ„ λ―Ώκ³  μ‹€μ²œν•˜λŠ” κ°œλ°œμžκ°€ λ˜κ³ μžν•©λ‹ˆλ‹€.

0개의 λŒ“κΈ€