꼬마 개발자 탱구

차근차근 확실하게

Framework/Spring

(Spring) HTTP

나눈 탱구 2023. 4. 6. 18:36

HTTP

인터넷에서, 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약 (프로토콜)

 

프로토콜

상호간의 정의한 규칙을 의미.

디바이스와 디바이스 사이에서 데이터를  통신을 주고 받기 위한 통 규약

HTTP, FTP, SMTP 등 이 있다.

 

역할

주소설정, 순서제어, 데이터 대열의 단편화 및 재조합,

연결제어, 흐름제어, 캡슐화, 오루제어, 동기화, 다중화, 전송 서비스 등

 

 


HTTP 메세지

서버와 클라이언트 간의 데이터가 교환되는 방식

Client 와 Sercer 간 Request, Respons 는 HTTP 메세지 규약 을 따름

HTTP 메세지는 웹 서비스 개발자에게 매우 중요

 

 


 

HTTP 요청과 응답

 

시작줄(start-line)

실행 되어야 할 요청,  요청 수행에 대한 성공 또는 실패

 

HTTP 헤더 세트

요청에 대한 설명, 메세지 본문에 대한 설명

 

빈줄 (blank line)

요청에 대한 모든 메타 정보가 전송 되었음을 알림

 

요청과 관련된 내용 or 응답과 관련된 문서가 들어간다.

본문의 존재 유무 및 크기는 첫줄과 HTTP 헤더에 명시

 

요청 헤드 (head)

HTTP 메세지의 시작줄과 HTTP헤더 묶음

 

본문(body)

HTTP 메세지의 페이로드

 

 


 

HTTP 요청

서버가 특정 동작을 취하게끔 만들기 위해 클라이언트에서 전송하는 메세지

 

시작줄

  1. HTTP 메서드
    • 동사
      •  GET  : 리소스를 클라이언트로 가져다 달라는 뜻
      •  PUT 
      •  POST  : 데이터가 서버롤 들어가야 함을 의미 (리소스 생성 or 수정 or 클라이언트로 돌려 보낼 임시 문서를 생성하기 위함 )
    • 명사 :  HEAD ,  OPTION 
  2. URL, 프로토콜, 포트, 도메인의 절대 경로 - 요청 컨텍스트에 의해 특정됨
    • origin 형식 : 끝에  와 쿼리 문자 열이 붙는 절대 경로
      •  GET  ,  POST  ,  HEAD  ,  OPTION  메서드와 함께 사용
    • absolute 형식 : 완전한 URL 형식. 프록시에 연결하는 경우 대부분  GET 과 함께 사용
    • authority 형식 : 도메인 이름 및 옵션 포트 
  3. HTTP 버전
    • 메세지의 남은 구조를 결정
    • 응답 메세지에서 써야 할 HTTP 버젼을 알려주는 역할

 

헤더

클라이언트와 서버가 요청 또는 응답으로부터 부가적인 정보를 전송할 수 있도록 해준다.

대소문자를 구분하지 않으며, 이름과  다음에 오는 값으로 이루어져 있다.

 

  • General 헤더
  • Request 헤더
  • Entity 헤더

 

 

본문

  • 요청의 마지막 부분에 들어가며, 모든 요청에 본문이 들어가지는 않음
  •  GET  HEAD  ,  DELETE  OPTION   처럼 리소스를 가져오는 요청은 본문에 필요 없다.
  •  POST   요청일 경우 업데이트를 위해 서버에 데이터 전송

 

 


HTTP 응답

 

상태줄

  • HTTP 응답의 시작 줄 
  • 상태코드 : 요청의 성공 여부를 나타낸다. 200, 404, 302 
  • 상태 텍스트 : 짧고 간결하게 상태 코드에 대한 설명을 글로 나타내어 HTTP 메세지를 이해할때 도움이 된다.

 

헤더

다른 헤더와 동일한 구조를 따른다.

대소문자를 구별하지 않는 문자열 다음에   :  이 오며, 그 뒤에 오는 값은 헤더에 따라 구조가 바뀐다. 

 

  • General 헤더 :  Via  와 같은 헤더는 메세지 전체에 적용
  • Response 헤더 :  Vary  와  Accept-Ranges 와 같은 헤더는 상태 줄에 미처 들어가지 못했던 서버에 대한 추가 정보를 제공
  • Entity 헤더  :  Content-Length  와 같은 헤더는 요청 본문에 적용. 요청내에 본문이 있을 경우에만 전송
  •  

 

 

본문

응답의 마지막 부부에 들어가며, 모든 응답에는 본문이 들어가지는 않는다.

  •  201 ,  204 , 와 같은 상태코드를 가진 응답에는 보통 본문이 없다.