(Daliy / 3.18 TIL) HTTP

Seung Ho Yoon·2021년 3월 22일

I studied this today

  • HTTP 요청 메서드
  • HTTP 메세지 해부
  • HTTP 특징
  • HTTP 상태코드

HTTP 요청 메소드

클라이언트와 서버가 서로 요청과 응답을 주고받을 수 있는 것은 HTTP라는 통신 규약 덕분이다.

  • 조회(Read) GET
    • 특정 리소스를 표시를 요청하고, 오직 데이터를 받기만을 원한다.
  • 추가(Create) POST
    • 서버로 데이터를 전송합니다. 요청 본문의 유형은 Content-Type 헤더로 나타낸다.
  • 갱신(Update) PUT or PATCH
    • PUT은 한 번을 보내도, 여러 번을 연속으로 보내도 같은 효과를 보입니 다. 즉, 부수 효과(side effect)가 없습니다.
    • 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내 는 데이터를 대체합니다.
  • 삭제(Delete) DELETE
    • DELETE 메서드는 지정한 리소스를 삭제합니다.

HTTP 메세지 해부

request(요청)

Start line(시작줄)

1 / 2 / 3

  • 1번(Method): 해당 request가 어떤 action을 취하는지 영어 동사(GET, PUT,POST) 혹은 명사(HEAD, OPTIONS)를 사용해는 메소드를 담는다.
  • 2번(Path): request target은 주로 URL,도메인,토프,프로토콜이 올수 있다.
  • 3번:HTTP 버전

HTTP Headers

해당 request에 추가적인 정보가 들어가 있다.

클라이언트와 서버가 요청 또는 응답할떄 부가적인 정보를 전송할 수 있도록 해준다. HTTP 헤더는 대소문자를 구분하지 않는 이름과 콜론 ':' 다음에 오는 값(줄 바꿈 없이)으로 이루어져있다.


body

클라이언트에 데이터들이 담겨져 있다.

클라이언트가 정보 서버에 어떤 데이터들이 넘겨줘야 서버가 어떤 정보를 알려줄수 있는 메소드들이 있다, 그 내용의 유형은 Content-Type의해 결정된다.

예를들면 클라이언트가 사용자 정보를 서버에 알려주면서 팔로우나, 좋아요 여부를 응답받고 싶을떄 바디에 데이터를 넘겨준다.

모든 요청에 바디가 들어가지 않는다 GET, HEAD, DELETE, OPTIONS은 안들어간다,
POST와 같이 일부 요청은 업데이트를 하기 위해 서버에 데이터를 전송한다


response(응답)

Start line(시작줄)

1 / 2 / 3

  • 1번 프로토콜버전: 보통 HTTP/1.1이다.
  • 2번 Status 코드번호: 2XX, 3XX, 4XX
  • 3번 상태 텍스트: 간결하게 ok, not found

HTTP Headers

  • Response의 headers와 동일하다.
  • 다만 response에서만 사용되는 header 값들이 있다.
  • 예를 들어, User-Agent 대신에 Server 헤더가 사용된다.

body

  • Response의 body와 일반적으로 동일하다.

  • Request와 마찬가지로 모든 response가 body가 있지는 않다. 데이터를 전송할 필요가 없을경우 body가 비어있게 된다.

  • 본문은 응답의 마지막 부분에 들어갑니다. 모든 응답에 본문이 들어가지는 않습니다. 201, 204과 같은 상태 코드를 가진 응답에는 보통 본문이 없다.

HTTP 특징

비연결성 (Connectionless) 과 무상태성 (Stateless)

비연결성

비연결성은 클라이언트와 서버가 한번 연결을 맺은 후, 클리이언트의 요청 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질을 말한다.

  • 장점: HTTP는 인터넷 상의 불특정 다수의 통신 환경의 기반으로 설계되었다. 만약 서버에서 다수의 클라이언트와 연결을 계속 유지해야 된다면 이에 따른 많은 리소스를 처리해야될 것이다, 따라서 연결을 유지하기 위한 리소스를 줄이면 더 많은 연결을 할 수 있으므로 비연결적인 특징을 갖습니다.

  • 단점: 서버는 클라이언트를 기억하고 있지 않기 떄문에 클라이언트의 요청에 대해, 매번 새로운 연결시도/해제 과정을 거쳐야하므로 오버헤드가 발생한다.

무상태성

비연결성으로 인해 HTTP는 이전의 상태정보나 현재 통신상태가 남아있지 않게 된다.

HTTP 상태코드(Status Code)

Response의 해더에서 세자리 숫자를 확인할 수 있다.

1xx (조건부 응답) Informational
2xx (성공) Successful
3xx (리다이렉션 완료) Redirection
4xx (클라이언트 요청 오류) Client Error
5xx (서버 오류) Server Error

profile
Frontend Developer

0개의 댓글