반응형
HTTP 메세지 기본 구조
HTTP request 메세지는 크게 3부분으로 구성됩니다.
- Start line
- headers
- bodyHTTP Request 구조
Start line
ex) GET /find HTTP/1.1
- HTTP Method
- 해당 request가 의도한 action을 정의하는 부분 (ex GET)
- GET, POST, PUT, PATCH, DELETE, OPTIONS 등이 있습니다.
- Request target
- 해당 request가 전송되는 목표 uri (ex /find)
- HTTP Version
- HTTP 버전 (ex 1.1)
Headers
ex)
Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Content-Type: application/json Content-Length: 257 Host: google.com User-Agent: HTTPie/0.9.3
- 해당 request에 대한 추가 정보를 담고 있는 부분
- Key : Value 값으로 되어있습니다.
- 자주 사용되는 Header
- Host
- 요청이 전송되는 target의 host url (ex google.com)
- User-Agent
- 요청을 보내는 클라이언트에 대한 정보 (ex 웹 브라우저에 대한 정보)
- Accept
- 해당 요청이 받을 수 있는 응답 타입 (ex application/json , */*)
- Connection
- 해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 커넥션을 유지할지, 끊을지에 대해 지시하는 부분 (ex keep-alive)
- Content-Type
- 해당 요청이 보내는 메세지 body의 타입 (ex application/json)
- Content-Length
- 메세지 body의 길이
- Host
Body
- 해당 request의 실제 메세지(내용)
- Body가 없는 request도 존재 (ex GET은 대부분 body가 없음)
ex
{ "id": "testId", "password": "testPassword" }
HTTP Response 구조
Status line
- Response의 상태를 간략히 나타내는 부분
- 3가지 부분으로 구성
- HTTP 버전
- Status Code : 응답 상태 코드, 숫자로 된 코드 (ex 200)
- Status text : 응답 상태를 간략히 설명해주는 부분 (ex Not Found)
Headers
- Request의 header와 거의 동일 (Response에서만 사용되는 header가 존재 (ex User-Agent 대신 Server 헤더 사용))
Body
- Request의 body와 거의 동일
- 데이터를 전송할 필요가 없으면 body는 비어있습니다.
HTTP Methods
GET
- 어떠한 데이터를 서버로부터 받을 때 주로 사용
- 가장 간단하고 많이 쓰이는 Method
- 보통 데이터를 받아오기만 하므로 Request에 body를 안보내는 경우가 많습니다.
POST
- 데이터를 생성/수정/삭제 할 때 주로 사용
PUT
- 데이터를 생성 or 수정할 때 사용
- 데이터 수정 시 자원의 전체가 아닌 일부만 전달할 경우,, 전달한 필드 외 모두 null or 초기값 처리
PATCH
- 데이터를 수정할 때 사용
- 데이터 수정 시 자원의 부분 교체
DELETE
- 특정 데이터를 서버에서 삭제 할 때 사용
OPTIONS
- 요청 URI에서 사용할 수 있는 Method를 받아올 때 사용
- ex) /update uri에서 어떤 method를 요청이 가능한가 (GET이냐 POST냐)를 알기위해 사용
출처
딸바보아재님 - [http method] put vs patch
teddybearjung님 - HTTP 구조 및 핵심 요소
삽질중인 개발자 - HTTP 구조 정리
반응형
'CS 지식 > 네트워크' 카테고리의 다른 글
브라우저에 URL을 입력했을 때의 과정 (0) | 2023.03.09 |
---|---|
HTTP 버전 (0) | 2023.03.06 |
HTTP와 HTTPS란? (0) | 2023.03.02 |
TCP와 UDP (0) | 2023.02.27 |
OSI 7계층이란? (0) | 2023.02.27 |
댓글