🍎HTTP - Checkpoint Solution with Socrative

✍🏻Socrative μ˜€λ‹΅λ…ΈνŠΈ

HTTP λŠ” 1.1 version 을 κ·Όκ°„μœΌλ‘œ ν•œλ‹€. HTTP 의 μƒˆλ‘œμš΄ κ΅¬ν˜„μ²΄ ν”„λ‘œν† μ½œ QUIC 이 λ‚˜μ™”λ‹€λŠ”λ° μ•„ κ·Έλ ‡κ΅¬λ‚˜ ν•˜κ³  λ„˜κΈ°μž.

𝐐1. HTTP에 λŒ€ν•œ λ‹€μŒ μ„€λͺ… 쀑 μ˜³μ§€ μ•Šμ€ 것은?

a. λͺ¨λ“  HTTP μš”μ²­μ€ header와 bodyλ₯Ό κ°–λŠ”λ‹€.

  • a μ—μ„œ GET method 일 λ•ŒλŠ” body κ°€ ν•„μš” μ—†λ‹€.
  • OPTIONS μ—μ„œλ„ DELETE μ—μ„œλ„ body κ°€ ν•„μš”μ—†λ‹€κ³  ν•œλ‹€.

b. ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ°„ μš”μ²­-응닡이 μ΄λ£¨μ–΄μ§€λŠ” 과정이닀.

c. λΈŒλΌμš°μ €μ™€ μ„œλ²„κ°€ 톡신할 수 μžˆλ„λ‘ λ§Œλ“€μ–΄ μ£ΌλŠ” μ—¬λŸ¬ ν”„λ‘œν† μ½œ κ°€μš΄λ° ν•œ μ’…λ₯˜λ‹€.

  • ν”„λ‘œν† μ½œμ˜ μ’…λ₯˜λŠ” λ‹€μ–‘ν•˜λ‹€. ftp, udp, smb 등등이 μžˆλŠ”λ°, 웹을 μ‚¬μš©ν•˜κΈ° μœ„ν•œ ν”„λ‘œν† μ½œ http λ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀.

d. μ„œλ²„κ°€ μ²˜λ¦¬ν•  수 μ—†λŠ” μš”μ²­μ˜ 경우, 400λ²ˆλŒ€ status codeλ₯Ό λ°˜ν™˜ν•œλ‹€.

  • 500 λ²ˆλŒ€ status code λ₯Ό λ°˜ν™˜ν•œλ‹€.

e. μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— λŒ€ν•΄ 무쑰건 응닡을 돌렀 μ£Όμ–΄μ•Ό ν•œλ‹€.

μ •λ‹΅ : A, D

πŸŒ²ν•΄μ„€

μ„œλ²„λŠ” λ§Œλ“œλŠ” μ‚¬λžŒ λ‚˜λ¦„λŒ€λ‘œ μ΄λ―€λ‘œ λ•Œλ‘œλŠ” GET μš”μ²­ μ‹œμ—λ„ POST 처럼 body λ₯Ό λ‹΄μ•„ 보낼 수 μžˆμ§€λ§Œ Restful ν•˜μ§€ μ•Šλ‹€κ³  ν•œλ‹€.

μ™œλƒλ©΄ λͺ©μ μ— λ§žλŠ” κ΅¬ν˜„ 방법이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

λͺ©μ μ— λ§žλŠ” κ΅¬ν˜„ 방법을 Restful 이라고 ν•œλ‹€. 즉 μ˜λ„λœ λ””μžμΈμ΄ μ•„λ‹ˆλΌλŠ” μ˜λ―Έμ΄λ‹€.

μ–΄λ–€ ν˜•νƒœμ˜ μ •λ³΄λ‘œ 데이터λ₯Ό κ΅μ²΄ν•˜κΈ° μœ„ν•΄μ„œ BODY λ₯Ό λ³΄λ‚΄λŠ” 것이닀.

mdn http message λ₯Ό κ²€μƒ‰ν•΄μ„œ μ½μ–΄λ³΄μž.

https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

Payload λŠ” Body 와 같은 말이라 ν•œλ‹€.

νŽ˜μ΄λ‘œλ“œ - μ μž¬λ¬Όν’ˆ, νŠΈλŸ­μ— 뭘 μ‹€μ„λ•Œ, λ„λ‘œλΌλŠ” ν”„λ‘œν† μ½œμ„ μ΄μš©ν•˜λŠ” 트럭이 μžˆλ‹€.

트럭이 μš”μ²­μ„ μ‹€μ–΄ λ³΄λ‚΄μ„œ λͺ©μ μ§€μ— κ°”λ‹€ λŒμ•„μ˜¨λ‹€ (μš”μ²­κ³Ό 응닡)

νŠΈλŸ­μ— 짐을 μ‹€μ–΄μ•Ό μš”μ²­μ„ λ³΄λ‚Όλ•Œ 가지 μ•Šκ²Ÿλ‚˜ μ΄λŸ°λŠλ‚Œ? λ°”λ””λž‘ κ°™λ‹€. 짐 이닀.

𝐐2. μ•„λž˜μ˜ HTTP λ©”μ‹œμ§€μ— λŒ€ν•œ μ„€λͺ…μœΌλ‘œ 잘λͺ»λœ 것은 λ¬΄μ—‡μΌκΉŒμš”?

res message

a. http response 이닀.

b. post λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν–ˆλ‹€ - μ—¬κΈ°μ„œλŠ” λͺ¨λ₯Έλ‹€.

c. response κ°€ μ„±κ³΅μ μœΌλ‘œ μ΄λ£¨μ–΄μ‘Œλ‹€λŠ” 사싀을 μ•Œ 수 μžˆλ‹€.

d. response 의 payload λŠ” html λ¬Έμžμ—΄μ΄λ‹€.

  • header 의 Content-Type 을 톡해 μ–΄λ–€ νƒ€μž…μœΌλ‘œ λ°”λ””λ₯Ό 보낼지 κ²°μ •ν•  수 μžˆλ‹€

μ €κΈ°λŠ” Content-Type 이 text/html 이넀?

πŸŒ²ν•΄μ„€ : MIME νƒ€μž…μ— λŒ€ν•΄ 검색 ν•΄λ³Ό 것!

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types

λ„€νŠΈμ›Œν¬ μƒμ—λŠ” ν™•μž₯μžκ°€ μ˜λ―Έκ°€ μ—†κ³  MIME νƒ€μž… 으둜 λ³΄λ‚΄λŠ”λ° 여기에 보면 text 뢀뢄에 text/plain, text/html, 이 있고 application 뢀뢄에도 보면 λ‚˜μ™€μžˆλ‹€.

여기에 μ›Ή κ°œλ°œμžλ“€μ„ μœ„ν•œ μ€‘μš”ν•œ MIME νƒ€μž… κΌ­ λ³Ό 것.

κ°€μž₯ popular ν•œ Content-Type 은 application/json 이닀.

ꡬ글 검색창에 μž…λ ₯ν•˜λŠ” λŒ“κΈ€μ€? GET μš”μ²­, 즉 payload κ°€ μ‹€λ €κ°€λŠ”κ²Œ μ•„λ‹ˆκ³ , url parameter 에 ?(λ¬ΌμŒν‘œ) νŒŒλΌλ―Έν„°κ°€ 이런 μ‹μœΌλ‘œ 담겨져 κ°„λ‹€.

그런데 μš”μ²­μ΄ POST 라면? 였늘 μŠ€ν”„λ¦°νŠΈ λ§Œλ“€μ–΄μ„œ λ„€νŠΈμ›Œν¬ νƒ­ μ—΄μ–΄μ„œ Headers 맨 μ•„λž˜ 내리면 Request Payload 에 λ¬Έμžμ—΄μ΄ μ‹€λ € μžˆλ‹€!

μ •λ‹΅ : b. POST λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν–ˆλ‹€. κ°€ μ˜€λ‹΅.

𝐐3. μ„œλ²„λ‘œ 데이터λ₯Ό μ „μ†‘ν•˜μ—¬ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€λ₯Ό μƒμ„±ν•˜κ³ μž ν•  λ•Œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” HTTP λ©”μ„œλ“œλŠ” λ¬΄μ—‡μΈκ°€μš”?

μ •λ‹΅ : POST

πŸŒ²λ²ˆμ™Έ - PUT, PATCH

PUT, PATCH 의 차이 - payload 전체λ₯Ό λ‹€ λ°”κΎΌλ‹€. ν˜Ήμ€ μΌλΆ€λ§Œ λ°”κΎΌλ‹€μ˜ 차이라 κ³  ν•œλ‹€.

PUT, PATCH λŠ” κ·Έ λͺ©μ μ΄ ν•΄λ‹Ή λ¦¬μ†ŒμŠ€ μ—…λ°μ΄νŠΈ μ΄λ―€λ‘œ (λŒ“κΈ€ μˆ˜μ •) μ—¬λŸ¬λ²ˆ 싀행해도 μ„œλ²„μ—μ„œμ˜ κ²°κ³ΌλŠ” λ˜‘κ°™λ‹€.

λ©±λ“±ν•˜λ‹€. (idempotent) λ©±λ“±μ„±.

𝐐4. HTTP ν†΅μ‹ μ˜ 두 가지 νŠΉμ„± (λ¬΄μƒνƒœ, λΉ„μ—°κ²°μ„±) 을 μ μ–΄μ£Όμ„Έμš”.

μ •λ‹΅ : stateless, connectionless

http process

🍎stateless : 각각 (μƒ‰κΉ”λ³„λ‘œ) 의 μš”μ²­μ€ 독립적이닀. 즉 μƒνƒœλ₯Ό μ €μž₯ν•˜μ§€ λͺ»ν•œλ‹€λŠ” 의미.

ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό μ €μž₯ν•˜λŠ” μΏ ν‚€λ‚˜ μ„Έμ…˜κ°™μ€ 보쑰 도ꡬ가 μžˆμ–΄μ•Ό μƒνƒœλ₯Ό μ €μž₯ν•˜μ§€λ§Œ 기본적으둜 λͺ¨λ“  http μš”μ²­μ€ 각각이 독립적이닀.

🍎connectionless : 더 μ΄μƒμ˜ 컀λ„₯μ…˜μ΄ μ—†λ‹€. 무연결성. ν•œλ²ˆ 응닡 μš”μ²­μ„ μ£Όκ³ λ°›μœΌλ©΄ 연결이 λŠκ²¨λ²„λ¦°λ‹€. ν•œλ²ˆμ˜ μš”μ²­ 응닡이 ν•˜κ³  λ‚œ ν›„ μ—°κ²° μƒνƒœλŠ” λŠμ–΄μ§„λ‹€.

🌲Same-Origin 의 μš”κ±΄

ν”„λ‘œν† μ½œ, 도메인, 포트 μ…‹λ‹€ κ°™μ•„μ•Ό Same-Origin 이닀!


Written by@[DotoriMook]
ν”„λ‘ νŠΈμ—”λ“œ μ£Όλ‹ˆμ–΄ 개발자 λ„ν† λ¦¬λ¬΅μ˜ 기술개발 λΈ”λ‘œκ·Έ μž…λ‹ˆλ‹€.

GitHubMediumTwitterFacebook