[Java] Http

μ΄κ΄‘ν›ˆΒ·2023λ…„ 6μ›” 20일
0

βœ… HTTP (Hypertext Transfer Protocol)

πŸ‘‰ μ›Ή κ°œλ°œμ— 빈번히 μ‚¬μš©ν•˜λŠ” 톡신 κ·œμ•½μœΌλ‘œ, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ 톡신을 μ •μ˜ν•œ ν”„λ‘œν† μ½œ

  • ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ 이야기λ₯Ό λ‚˜λˆŒ λ•Œ μ£Όκ³  λ°›λŠ” λ¬Έμ„œμ˜ 양식
  • HTML λ¬Έμ„œμ™€ 같은 μžμ›μ„ 주고받을 수 μžˆλ„λ‘ ν•˜λŠ” κ·œμ•½
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­, μ„œλ²„κ°€ 응닡 β†’ Client-Server Protocol

🌐 HTTP Request

πŸ”Έ Request Line

  • Get β†’ 데이터 쑰회λ₯Ό λͺ©μ 
  • POST β†’ 데이터λ₯Ό ν¬ν•¨ν•œ μš”μ²­μ„ 보낼 λ•Œ (생성)
  • PUT β†’ 데이터λ₯Ό ν¬ν•¨ν•œ μš”μ²­μ„ 보낼 λ•Œ (μˆ˜μ •)
  • DELETE β†’ 데이터λ₯Ό μ‚­μ œν•˜λŠ” μš”μ²­μ„ 보낼 λ•Œ
  • HTTP μš”μ²­μ˜ μ „λ°˜μ μΈ 정보가 포함

πŸ”Έ Request Headers

  • μš”μ²­μ— λŒ€ν•œ λΆ€μˆ˜μ μΈ 정보
  • 데이터λ₯Ό μ–΄λ–€ ν˜•νƒœλ‘œ 해석해야 ν•˜λŠ”κ°€
  • μ–΄λ–€ 응닡을 κΈ°λŒ€ν•˜λŠ”κ°€
    • HTML
    • JSON
    • XML

πŸ”Έ Request Body

  • μ „λ‹¬ν•˜κ³ μž ν•˜λŠ” μ‹€μ œ 데이터가 ν¬ν•¨λœ λΆ€λΆ„

🌐 HTTP Response

πŸ”Έ Status Line

πŸ‘‰ HTTP 버전, μƒνƒœ μ½”λ“œ, μƒνƒœ μ½”λ“œ λ©”μ„Έμ§€

πŸ’‘ HTTP Status Code

  • 100 ~ 199 : 정보 제곡 λͺ©μ 
  • 200 ~ 299 : μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμ„ 경우
  • 300 ~ 399 : Redirect, ν΄λΌμ΄μ–ΈνŠΈμ˜ 좔가적인 행동이 ν•„μš”ν•  경우 (301, 302)
  • 400 ~ 499 : ν΄λΌμ΄μ–ΈνŠΈκ°€ 처리 λΆˆκ°€λŠ₯ν•œ μš”μ²­μ„ ν•œ 경우 (400 401 403 404)
  • 500 ~ 599 : Internal Server Error, μ„œλ²„μ— λ¬Έμ œκ°€ 생겨 μ²˜λ¦¬κ°€ λΆˆκ°€λŠ₯ν•œ 경우 (500)

πŸ”Έ Response Headers

  • 응닡에 λŒ€ν•œ λΆ€μˆ˜μ μΈ 정보
  • 해석 방식

πŸ”Έ Response Body

  • μ „λ‹¬ν•˜κ³ μž ν•˜λŠ” μ‹€μ œ 데이터

βœ… @RequestMapping

πŸ‘‰ μ£Όμ–΄μ§„ 섀정을 λ°”νƒ•μœΌλ‘œ, μΌμΉ˜ν•˜λŠ” μš”μ²­μ΄ 듀어왔을 λ•Œ μ‹€ν–‰ν•  λ©”μ†Œλ“œ λ˜λŠ” 컨트둀러λ₯Ό μ§€μ •ν•˜λŠ” μš©λ„λ‘œ ν™œμš©

πŸ”Έ 경둜인 pathλ₯Ό μ„€μ •ν•΄ ν™œμš©ν•¨

@RequestMapping(
		Value = "/example/{pathVar}",
        method = { RequestMethod.GET, RequestMethod.Post },
        consumes = MediaType.APPLICATION_JSON_VALUE,
        headers = "x-example=hello",
        params = "example=hello"
)
public String example(@PathVariable("pathVar") String pathVar) {
	log.info("GET or POST /example/" + pathVar);
    return "index";
}
  • path / value : μš”μ²­ URL의 경둜λ₯Ό μ„€μ •. ν• λ‹Ήλœ 경둜 μ™Έ μš”μ²­μ—λŠ” λ©”μ†Œλ“œκ°€ μ‹€ν–‰λ˜μ§€ μ•ŠμŒ
  • method : μš”μ²­μ˜ HTTP Methodλ₯Ό μ„€μ •. ν• λ‹Ήλœ HTTP Method에 λŒ€ν•΄μ„œλ§Œ μ‹€ν–‰
  • consumes : μš”μ²­μ˜ Content-Type Headerλ₯Ό μ„€μ •
  • produces : μ‘λ‹΅μ˜ Content-Type Headerλ₯Ό μ„€μ •
  • headers : HTTP headerλ₯Ό μ„€μ •. 쑰건을 μΆ©μ‘±ν•˜λŠ” μš”μ²­μ— λŒ€ν•΄μ„œλ§Œ λ©”μ†Œλ“œ μ‹€ν–‰
  • params : Query Parameterλ₯Ό μ„€μ •. 쑰건을 μΆ©μ‘±ν•˜λŠ” μš”μ²­μ— λŒ€ν•΄μ„œλ§Œ λ©”μ†Œλ“œ μ‹€ν–‰
profile
μ›ƒμœΌλ©° 일할 λ•Œ, μ‹œλ„ˆμ§€κ°€ λ°°κ°€ λœλ‹€κ³  λ―ΏλŠ” 개발자

0개의 λŒ“κΈ€