HTTP Request & Response
![](https://static.packt-cdn.com/products/9781789139433/graphics/3af82a56-a31d-4d63-a7fc-40992a5e0ef3.png)
HTTP Message는 기본적으로 Start-Line, Header, Body로 구성됨
HTTP Request
Start-Line
- "HTTP Method / Request Target / HTTP Version"으로 이루어짐
- Request Method : HTTP Request가 발생했을 때 서버가 해당 요청에 대해 수행해야 하는 액션
Method Name Action GET - 간단한 데이터를 서버로 요청(SELECT)해서 받아올 때 사용
- 캐싱(한 번 접근 후, 다음 요청을 위해 데이터를 저장하는 방식)을 사용
- POST에 비해 속도가 빠르지만, 데이터를 URL 뒤에 붙여서 전송하기 때문에 노출됨
- HTTP Request의 body와 content-type은 비어 있음PUT - 요청 받은 자원을 수정(UPDATE)할 때 사용 POST - 데이터 생성/수정/삭제/전송에 사용
- HTTP Request의 body에 데이터를 넣어서 보낼 수 있음
- 요청 받은 자원을 생성(CREATE)하는 방식
- URL 주소에 추가하는 방식이 아니기 때문에 GET에 비해 많은 데이터를 전송 가능DELETE - 요청된 자원을 삭제(DELETE)할 때 사용
- 안정성 문제로 대부분 비활성화되어 있음OPTIONS - 웹 서버에서 지원하는 메소드의 종류를 확인하기 위해 사용 - Request Target : HTTP Request가 전송되는 목표 주소
- HTTP version : 버전에 따라 메시지 구조나 데이터가 다를 수 있기 때문에 명시
Header
- HTTP Request에 대한 정보
- Key와 Value로 이루어짐
Header Type Description Host 요청이 전송되는 Target의 호스트 URL 주소 User-Agent 요청을 보내는 클라이언트 정보 Accept 해당 요청이 받을 수 있는 body data type(모든 타입 : */*로 사용) Connection - 요청을 처리한 이후, 연결을 유지할 것인지의 정보
- 요청이 들어올 때마다 새로운 연결은 비효율적이기 때문에 요청이 계속 있는 경우엔 연결을 유지하는 것이 좋음
- Keep-alive : 연결 유지 / Close : 연결 해제Content-Type 요청이 보내는 body type Content-Length body의 크기 Body
- HTTP Request가 전송하는 데이터를 저장함
- 전송 데이터가 없다면 body는 비어있음
HTTP Response
- Status-Line
- "HTTP version / Status Code / Status Text"로 이루어짐
- Status Code : 응답 상태를 나타내는 코드(ex : 404 - 요청한 페이지가 서버에 존재하지 않음)
- Status Text : 응답 상태를 간략하게 나타낸 텍스트
- Header
- User-Agent(Response에서는 Server 헤더 사용)를 제외하고, 나머지 부분은 HTTP Request와 동일
- Body
- HTTP Request와 동일
- Status-Line