HTTP (HyperText Transfer Protocol)
텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다.
HTTP 동작방식
클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.
요청 : client -> server
응답 : server -> client```
HTML 문서만이 HTTP 통신을 위한 유일한 정보 문서는 아니다.
Plain text로 부터 JSON 데이터 및 XML과 같은 형태의 정보도 주고 받을 수 있으며, 보통은 클라이언트가 어떤 정보를 HTML 형태로 받고 싶은지, JSON 형태로 받고 싶은지 명시해주는 경우가 많다.
HTTP 특징
- HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석이 된다.
- TCP/ IP를 이용하는 응용 프로토콜이다.
- HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.(이러한 단점을 해결하기 위해 Cookie와 Session이 등장하였다.)
- HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
Request Method
- GET : 자료를 요청할 때 사용
- POST : 자료의 생성을 요청할 때 사용
- PUT : 자료의 수정을 요청할 때 사용(전체 수정)
- PATCH: 자료의 수정을 요청할 때 사용(일부 수정)
- DELETE : 자료의 삭제를 요청할 때 사용
HTTP Request 구조
HTTP request 메세지는 크게 3부분으로 구성된다:
start line
- 1.HTTP Method: GET, POST, PUT, DELETE, OPTIONS
- 2.Request target: request가 전송되는 목표 uri.예를 들어 /login.
- 3.HTTP Version:사용되는 HTTP 버젼. 버젼에는 1.0, 1.1, 2.0 등이 있다.
- request에 대한 추가 정보를 담고 있는 부분.[ex:request 메세지 body의 총 길이 (Content-Length) 등.]
- Key:Value 값으로 되어있다 //key:value
body
- 해당 reqeust의 XML, JSON, Multi Form 등의 데이터를 담는다.(get요청은 body가 없어서 query나 param으로 데이터를 보내야됨)
Status Code
- 100 (조건부 응답) : 요청을 받았으며 작업을 계속한다.
- 200(성공) : 요청을 성공적으로 처리하였습니다.
- 300(리다이렉션) : 요청 완료를 위한 추가 작업이 필요합니다.
- 400(클라이언트 에러) : 요청의 방식이 잘못되었거나 요청을 처리할 수 없습니다.
- 500(서버 에러) : 서버 오류로 처리할 수 없습니다.
참고