HTTP ν”„λ‘œν† μ½œ πŸͺ

jurinΒ·2021λ…„ 5μ›” 19일
0

HTTP ν”„λ‘œν† μ½œ

HTTP(Hypertext Transfer Protocol)은 μ›Ή μ„œλ²„μ™€ μ›Ή ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄μ—μ„œ 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 톡신 λ°©μ‹μœΌλ‘œ TCP/IP ν”„λ‘œν† μ½œ μœ„μ—μ„œ λ™μž‘ν•œλ‹€.

즉, 웹을 μ΄μš©ν•˜λ €λ©΄ μ›Ή μ„œλ²„μ™€ μ›Ή ν΄λΌμ΄μ–ΈνŠΈλŠ” 각각 TCP/IP λ™μž‘μ— ν•„μˆ˜μ μΈ IP μ£Όμ†Œλ₯Ό κ°€μ Έμ•Ό ν•œλ‹€

HTTPλŠ” μ΄λ¦„λŒ€λ‘œλΌλ©΄ ν•˜μ΄νΌν…μŠ€νŠΈ(HTML) μ „μ†‘μš© ν”„λ‘œν† μ½œμ΄μ§€λ§Œ μ»΄ν“¨ν„°μ—μ„œ λ‹€λ£° 수 μžˆλŠ” 데이터라면 무엇이든 전솑 κ°€λŠ₯

HTTP λ©”μ„Έμ§€μ˜ ꡬ쑰

  • ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ λ³΄λ‚΄λŠ” μš”μ²­ λ©”μ‹œμ§€
  • μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ³΄λ‚΄λŠ” 응닡 λ©”μ‹œμ§€

ν—€λ”λŠ” 각 ν–‰μ˜ 끝에 쀄 λ°”κΏˆ 문자인 CRLF(Carriage Return Line Feed)κ°€ 있고, 헀더와 λ°”λ””λŠ” 빈 μ€„λ‘œ κ΅¬λΆ„ν•œλ‹€.

λ°”λ””μ—λŠ” ν…μŠ€νŠΈλΏλ§Œ μ•„λ‹ˆλΌ λ°”μ΄λ„ˆλ¦¬ 데이터도 λ“€μ–΄κ°ˆ 수 μžˆλ‹€.

  • μš”μ²­ λ©”μ‹œμ§€

Host ν•­λͺ©μ€ ν•„μˆ˜λ‘œ ν‘œμ‹œν•΄μ•Ό ν•˜λŠ”λ° μœ„μ²˜λŸΌ Host ν—€λ”λ‘œ ν‘œμ‹œν•  μˆ˜λ„ 있고 μ•„λž˜ 처럼 μš”μ²­λΌμΈμ˜ URL에 Hostλ₯Ό ν‘œμ‹œν•΄μ„œ Host 헀더λ₯Ό μƒλž΅ν•  μˆ˜λ„ μžˆλ‹€.

GET http://www.example.com:8080/book/shakespeare HTTP/1.1
  • 응닡 λ©”μ‹œμ§€

μ„œλ²„μ—μ„œ 처리 κ²°κ³Όλ₯Ό μƒνƒœλΌμΈμ— ν‘œμ‹œν•˜λŠ”λ° 200 OKμ΄λ―€λ‘œ μ •μƒμ μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμŒμ„ μ•Œ 수 μžˆλ‹€.

URI vs URL
URI(Uniform Resource Indentifier)은 URL(Uniform Resource Locator)을 ν¬ν•¨ν•˜λŠ” μ’€ 더 넓은 μ˜λ―Έμ§€λ§Œ κ°™λ‹€κ³  생각해도 무방

HTTP 처리 방식

HTTP λ©”μ†Œλ“œλ₯Ό ν†΅ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ›ν•˜λŠ” 처리 방식을 μ„œλ²„ μš”μ²­

많이 μ‚¬μš©λ˜λŠ” λ©”μ†Œλ“œλŠ” CRUD와 맀핑이 λ˜λŠ” GET, POST, UPDATE, DELETE이닀.

GET 방식 : μ§€μ •ν•œ URL의 정보λ₯Ό κ°€μ Έμ˜€λŠ” λ©”μ†Œλ“œ

POST 방식 : λ¦¬μ†ŒμŠ€ 생성. λΈ”λ‘œκ·Έμ— 글을 λ“±λ‘ν•˜λŠ” 경우

PUT 방식 : λ¦¬μ†ŒμŠ€ λ³€κ²½. λΈ”λ‘œκ·Έμ—μ„œ 글을 μ—…λ‘œλ“œν•œ μž‘μ„±μžλ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ κΈ€μ˜ λ‚΄μš©μ„ μ—…λ°μ΄νŠΈν•˜λŠ” 경우

DELETE 방식 : λ¦¬μ†ŒμŠ€ μ‚­μ œ. DELETE μš”μ²­μ— λŒ€ν•œ 응닡은 λ°”λ””λ₯Ό λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€

GETκ³Ό POST λ©”μ†Œλ“œ

HTML의 νΌμ—μ„œ 지정할 수 μžˆλŠ” λ©”μ†Œλ“œκ°€ GETκ³Ό POST 밖에 μ—†κΈ° λ•Œλ¬Έμ— κ°€μž₯ 많이 μ‚¬μš©λœλ‹€.

  • GET : URL λΆ€λΆ„μ˜ ? 뒀에 이름=κ°’ 쌍으둜 이어뢙여 보냄
GET http://www.naver.com/?q=forms&release=1 HTTP/1.1
  • POST : GETμ—μ„œ URL에 ν¬ν•¨μ‹œμΌ°λ˜ νŒŒλΌλ―Έν„°λ“€μ„ μš”μ²­ λ©”μ‹œμ§€μ˜ 바디에 λ„£μ–΄ 보냄
POST http://www.naver.com/ HTTP/1.1
Content-Type: apllication/x-www-form-rulencoded

q=forms&release=1

URL은 길이 μ œν•œμ΄ 있기 λ•Œλ¬Έμ— GET을 μ‚¬μš©ν•˜λ©΄ λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό 보내기 μ–΄λ ΅λ‹€. 또 μ „λ‹¬λ˜λŠ” μ‚¬μš©μžμ˜ 데이터가 μ›Ή λΈŒλΌμš°μ €μ˜ μ£Όμ†Œμ°½μ— λ…ΈμΆœλœλ‹€λŠ” 단점이 μžˆμ–΄ λ³΄μ•ˆμ— λΆˆλ¦¬ν•˜λ‹€.

λ”°λΌμ„œ 폼을 μ‚¬μš©ν•˜κ±°λ‚˜ 좔가적인 νŒŒλΌλ―Έν„°λ₯Ό μ„œλ²„λ‘œ λ³΄λ‚΄λŠ” κ²½μš°μ—λŠ” GET보닀 POST 방식을 μ‚¬μš©ν•œλ‹€. (μž₯κ³  ν”„λ ˆμž„μ›Œν¬μ—μ„œλ„ 폼의 λ°μ΄ν„°λŠ” POST λ°©μ‹λ§Œμ„ μ‚¬μš©)

μƒνƒœ μ½”λ“œ

μ„œλ²„μ—μ„œμ˜ 처리 κ²°κ³ΌλŠ” 응닡 λ©”μ‹œμ§€μ˜ μƒνƒœλΌμΈμ— μžˆλŠ” μ‚¬νƒœ μ½”λ“œλ₯Ό 보고 νŒŒμ•…ν•  수 μžˆλ‹€. μƒνƒœ μ½”λ“œλŠ” μ„Έ 자리 숫자둜 λ˜μ–΄ μžˆλŠ”λ° 첫 번째 μˆ«μžλŠ” HTTP μ‘λ‹΅μ˜ μ’…λ₯˜λ₯Ό κ΅¬λΆ„ν•˜κ³ , λ‚˜λ¨Έμ§€ 두 개의 μˆ«μžλŠ” 세뢀적인 응닡 λ‚΄μš©μ˜ ꡬ뢄을 μœ„ν•œ λ²ˆν˜Έμ΄λ‹€.

자주 μ‚¬μš©λ˜λŠ” μƒνƒœ μ½”λ“œ

2xx

  • 200 OK : μ„œλ²„κ°€ μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ 처리
  • 201 Create : μš”μ²­μ΄ μ²˜λ¦¬λ˜μ–΄μ„œ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€ 생성됨
  • 202 Accepted : ν—ˆμš©λ¨. μš”μ²­μ€ μ ‘μˆ˜ν–ˆμ§€λ§Œ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•ŠμŒ

3xx

  • 301 Moved Permanetly : 영ꡬ 이동 , μ§€μ •ν•œ λ¦¬μ†ŒμŠ€κ°€ μƒˆλ‘œμš΄ URI둜 이동
  • 303 See Other : λ‹€λ₯Έ μœ„μΉ˜λ‘œ μš”μ²­ν•˜λΌ
  • 307 Temporary Redirect : μž„μ‹œλ‘œ λ¦¬λ‹€μ΄λ ‰μ…˜ μš”μ²­μ΄ ν•„μš”

4xx

  • 400 Bad Request : 잘λͺ»λœ μš”μ²­
  • 401 Unauthorized : κΆŒν•œμ—†μŒ
  • 403 Forbidden : μ§€μ •ν•œ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μ—‘μ„ΈμŠ€ κΈˆμ§€λ‹Ήν•¨
  • 404 Not Found : μ§€μ •ν•œ λ¦¬μ†ŒμŠ€λ₯Ό 찾을 수 μ—†λ‹€
  • 405 : ν—ˆμš©λ˜μ§€ μ•ŠλŠ” 방법. POST λ°©μ‹λ§Œμ„ μ§€μ›ν•˜λŠ” 뷰에 GET μš”μ²­μ„ ν•  경우

5xx

  • 500 Internal Server Error : μ„œλ²„ λ‚΄λΆ€ 였λ₯˜ λ°œμƒ
  • 502 Bad Gateway : λΆˆλŸ‰ κ²Œμ΄νŠΈμ›¨μ΄
  • 503 Service Unavailable : μ„œλ²„μ—μ„œ μ„œλΉ„μŠ€ 제곡 λΆˆκ°€




좜처: Django둜 λ°°μš°λŠ” 파이썬 μ›Ή ν”„λ‘œκ·Έλž˜λ°(기초) - κΉ€μ„ν›ˆλ‹˜

profile
anaooauc1236@naver.com

0개의 λŒ“κΈ€