🌈 HTTP μ΄ν•΄ν•˜κΈ°

may_soouuΒ·2020λ…„ 9μ›” 2일
0

1. HTTP λž€?

  • Hyper Text Transfer Protocol
    • Hyper Text
      - λ¬Έμ„œμ™€ λ¬Έμ„œκ°€ μ—°κ²°λ˜λ„λ‘ ν•˜λŠ” νƒœκ·Έλ‘œ κ΅¬μ„±λœ μ–Έμ–΄
    • Transfer
      - μ „μ†‘ν•œλ‹€
    • Protocol
      - μ–΄λ–»κ²Œ HTMLνŒŒμΌμ„ μ£Όκ³  받을지에 λŒ€ν•œ 약속!

2. HTTP의 νŠΉμ§•

  1. Request μš”μ²­
  2. Response 응닡
    μš”μ²­ : ꡬ글에 λ§›μžˆλŠ” 사진 보여달라고 검색
    응닡 : λ§›μžˆλŠ” 사진 λ„μ›Œμ€„κ»˜ ~
    μš”μ²­ : λŒ€ν™”λ°©μ— λ“€μ—¬λ³΄λ‚΄μ€˜
    응닡 : μ–΄ 듀여보내쀬어 ~

  3. Stateless
  • μƒνƒœκ°€ μ—†λ‹€λŠ” 뜻 ! 즉 λͺ¨λ“  μš”μ²­μ΄ λ…λ¦½μ μ΄λΌλŠ” 것
    ex.
    μš”μ²­ 1 쀌 둜그인
    응닡 1 둜그인 200 ok
    μš”μ²­ 2 λ―ΈνŒ… 접속
    응닡 2 λ―ΈνŒ… 접속 ok
    μ—¬κΈ°μ„œ! λ―ΈνŒ…μ— 접속 ν•˜λŠ” 건 λ‘œκ·ΈμΈμ„ ν•΄μ•Ό κ°€λŠ₯ν•˜λ‹€.
    근데 AλΌλŠ” μ‚¬λžŒμ΄ 이전에 둜그인 ν–ˆλ‹€λŠ” 사싀은 μ„œλ²„κ°€ μ•Œ 수 μ—†λ‹€.
    μ‹€μƒν™œ 예둜, μš°λ¦¬κ°€ 야ꡬμž₯ λ“€μ–΄κ°ˆ λ•Œ κ²€ν‘œμ›ν•œν…Œ ν‘œλ₯Ό 보여주고 λ“€μ–΄κ°€μ§€λ§Œ κ²€ν‘œμ›μ€ μš°λ¦¬κ°€ μ‹€μ œλ‘œ λˆμ„ λƒˆλŠ”μ§€ μ•ˆ λƒˆλŠ”μ§€λŠ” λͺ¨λ₯Έλ‹€. λŒ€μ‹  κ·Έ 증거둜 μž…μž₯ν‘œλ₯Ό 보여주면 μ•„, μ΄μ‚¬λžŒ 돈 λƒˆκ΅¬λ‚˜ ν•˜κ³  μ•Œ 수 μžˆλŠ” 것
    κ·Έλž˜μ„œ μ„œλ²„μ—μ„œλ„ 'λ‚˜ μ•„κΉŒ 둜그인 ν–ˆμ–΄, κ·Έλž˜μ„œ λ―ΈνŒ… 접속해도 돼' 와 같은 티켓을 보내쀀닀 > 이 티켓은 λ‚˜μ€‘μ— μžμ„Έν•˜κ²Œ λ‹€λ£° μ˜ˆμ • ~~~

2-1. Request / Response

1. Resquest

: ν”„λ‘ νŠΈμ—μ„œ λ°±μ—”λ“œμ— 데이터 처리λ₯Ό μ‹œμž‘ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄μ„œ λ³΄λ‚΄λŠ” 메세지

ꡬ성

κ΅¬μ„±λ‚΄μš©
Start LineGET /login HTTP/1.1
Headers메타 데이터
Bodyμš°λ¦¬κ°€ μ£Όκ³  λ°›κ³ μž ν•˜λŠ” λ‚΄μš©

1) Start Line

  • GET /login HTTP/1.1
    -> GET λ©”μ†Œλ“œλ‘œ login μ΄λΌλŠ” μš”μ²­ νƒ€κ²Ÿμ— HTTP 1.1 λ²„μ „μœΌλ‘œ μš”μ²­μ„ 보내겠닀!
    (πŸ˜€ λ©”μ†Œλ“œλŠ” μ•„λž˜μ—μ„œ λ‹€μ‹œ 정리 ~ )

2) Headers

  • ν˜ΈμŠ€νŠΈλŠ” λˆ„κ΅¬μ΄λ©°,
    μš”μ²­μ˜ μ’…λ₯˜κ°€ 뭐고(이미지인지 ν…μŠ€νŠΈμΈμ§€ λ“±)
    이 μ„œλ²„μ— 접속해도 λ˜λŠ” μ‚¬λžŒμΈμ§€ λ“±λ“± 메타 데이터λ₯Ό λ‹΄κ³  μžˆλ‹€

3) Body

  • ν•΄λ‹Ή μš”μ²­μ˜ μ‹€μ œ λ‚΄μš©
  • POST μ—μ„œ 주둜 μ‚¬μš©ν•œλ‹€

2. Response

: μš”μ²­μ— λŒ€ν•œ 처리 μƒνƒœλ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 전달

ꡬ성

κ΅¬μ„±λ‚΄μš©
Status LineHTTP/1.1 404 Not Found
Headers메타 데이터
Bodyμš°λ¦¬κ°€ μ£Όκ³  λ°›κ³ μž ν•˜λŠ” λ‚΄μš©

1) Status Line

  • HTTP/1.1 404 Not Found
    -> HTTP 1.1 λ²„μ „μœΌλ‘œ μ‘λ‹΅ν•˜κ³  μžˆλŠ”λ°, ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ 보낸 μš”μ²­(ex. 둜그인 μ‹œλ„)에 λŒ€ν•΄μ„œ μœ μ €μ˜ 정보λ₯Ό 찾을 수 μ—†κΈ° λ•Œλ¬Έμ—(Not Found) 404 μƒνƒœ 메세지λ₯Ό 보낸닀.

2) Headers

  • ν˜ΈμŠ€νŠΈλŠ” λˆ„κ΅¬μ΄λ©°,
    μš”μ²­μ˜ μ’…λ₯˜κ°€ 뭐고(이미지인지 ν…μŠ€νŠΈμΈμ§€ λ“±)
    이 μ„œλ²„μ— 접속해도 λ˜λŠ” μ‚¬λžŒμΈμ§€ λ“±λ“± 메타 데이터λ₯Ό λ‹΄κ³  μžˆλ‹€

3) Body

  • ν•΄λ‹Ή μš”μ²­μ˜ μ‹€μ œ λ‚΄μš©
  • POST λ©”μ†Œλ“œμ—μ„œ 주둜 μ‚¬μš©ν•œλ‹€
  • κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” Body 의 데이터 νƒ€μž…μ€ JSON(JavaScript Object Notation) 이닀

2-2. HTTP의 λ©”μ†Œλ“œ

ν”„λ‘ νŠΈμ˜ μž…μž₯μ—μ„œ μš”μ²­μ˜ μ˜λ„κ°€ λ‹΄κ²Όλ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€

1) GET

  • μ–΄λ–€ 데이터λ₯Ό μ„œλ²„λ‘œ λΆ€ν„° λ°›μ•„(GET)올 λ•Œ 주둜 μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œ
  • 데이터λ₯Ό λ°›μ•„μ˜€κΈ°λ§Œ ν•  λ•Œ μ‚¬μš©λœλ‹€
    ex. μ• ν”ŒμŠ€ν† μ–΄ 접속 > μ œν’ˆ 확인 νŽ˜μ΄μ§€
    λ„ˆλ„€ 가지고 μžˆλŠ” μƒν’ˆ 뭐 μžˆλŠ”μ§€ μ’€ λ³΄μ—¬μ€˜~
    κ·Έλƒ₯ μš”μ²­λ§Œ ν•˜λŠ” 것! ν΄λΌμ΄μ–ΈνŠΈλ‘œ 인해 DB에 λ­”κ°€ 영ν–₯이 가지 μ•ŠμŒ
    λ˜λŠ”
    μ‡Όν•‘λͺ° μž₯λ°”κ΅¬λ‹ˆμ— μžˆλŠ” λ‚΄ μž₯λ°”κ΅¬λ‹ˆ λ‚΄μ—­λ§Œ 쑰회

2) POST

  • 데이터λ₯Ό 생성 / μˆ˜μ • ν•  λ•Œ 주둜 μ‚¬μš©λ˜λŠ” λ©”μ†Œλ“œ
  • 데이터λ₯Ό 생성 및 μˆ˜μ • ν•  λ•Œ 많이 μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ— λŒ€λΆ€λΆ„μ˜ 경우 μš”μ²­μ— bodyκ°€ ν¬ν•¨λ˜μ„œ 보내진닀
    ex.
    μΈμŠ€νƒ€κ·Έλž¨ μ„œλ²„μ— λ‚΄κ°€ λ¨ΉμŠ€νƒ€κ·Έλž¨ μ˜¬λ Έμ„ λ•Œ > μΈμŠ€νƒ€κ·Έλž¨ 데이터가 λ°”λ€œ
    μΈμŠ€νƒ€κ·Έλž¨μ— μ—†λ˜ 데이터인데 λ‚΄κ°€ μ—…λ‘œλ“œ ν•˜λ©΄μ„œ 데이터가 생긴 것!
    그럼 κ·Έ λ°μ΄ν„°λŠ” BODY뢀뢄에 λ‹΄κ²¨μ Έμ„œ λ“€μ–΄κ°„λ‹€
    λ˜λŠ”
    μ‡Όν•‘λͺ° μž₯λ°”κ΅¬λ‹ˆμ— λ‹΄κ³  싢은 것 ν•˜λ‚˜ 더 μΆ”κ°€
    잘 담아지면 201 success

3) DELETE

  • νŠΉμ • 데이터λ₯Ό μ„œλ²„μ—μ„œ μ‚­μ œν•  λ•Œ μ‚¬μš©λ˜λŠ” λ©”μ†Œλ“œ
    μž₯λ°”κ΅¬λ‹ˆμ— μžˆλŠ” κ±Έ μ‚­μ œν•΄μ•Όκ² μ–΄!

3. Response Status Codes

400 : ν΄λΌμ΄μ–ΈνŠΈκ°€ μ•„μ˜ˆ 잘λͺ»λœ 정보 μž…λ ₯ν–ˆμ„ λ•Œ
(이메일 칸에 μœ μ € λ„€μž„ λ„£μ—ˆλ‹€λ“ μ§€)

401 : 인증이 μ•ˆλλ‹€λŠ” 것 (둜그인 μ•ˆν•˜κ³  λ§ˆμ΄νŽ˜μ΄μ§€ 보렀고 ν•˜λŠ”κ±°)

403 : λ‘œκ·ΈμΈμ€ ν–ˆλŠ”λ° κΆŒν•œμ΄ 없을 λ•Œ (λ„·ν”Œλ¦­μŠ€ 결제 μ•ˆν–ˆλŠ”λ° μ˜μƒ 보렀고 ν•  λ•Œ)

404 : url 이 없을 λ•Œ (ν”„λ‘ νŠΈλž‘ 같이 μ–˜κΈ° λ‚˜λˆˆ ν›„ λ°±μ—”λ“œμ—μ„œ κ²°μ •)

500 : μ„œλ²„μ—μ„œ 잘λͺ» 된 κ±°

					좜처 : μœ„μ½”λ“œ μ†Œν—Œλ‹˜
profile
back-end 개발자

0개의 λŒ“κΈ€