HTTP(HyperText Transfer Protocol)라는것은 HTML(hypertext) 문서를 교환하기 위해 만들어진 통신규약(protocol)이다.
보통 웹상에서는 네트워크로 서버끼리 통신 할때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 통신 형식이다.
Client <-> Server 간의 통신에 사용되며 프론트엔드와 백엔드 서버간의 통신에도 사용된다.
HTTP 통신방식
- 기본적으로 요청(request)과 응답(response)의 구조로 되어있다. (클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조이다.)
User -> browser (request<->response) server
HTTP는 상태를 저장하지 않는다. 어떠한 요청이 오면 그것에 응답할뿐 여러 요청과 응답끼리 연결되어 있지 않다. (독립적이다)
HTTP request
HTTP request 형식
- HTTP Method / request target / HTTP Version으로 구성되어 있다.
POST /user/login HTTP/1.1
- HTTP Method
- 해당 request가 의도한 action을 정의하는 부분
- HTTP Method에는 GET, POST, PUT, DELETE, OPTIONS 등이 있다.
- 주로 GET, POST가 쓰인다.
- Request target
- 해당 request가 전송되는 목표 URI ex)
/login
- 해당 request가 전송되는 목표 URI ex)
- HTTP Version
- HTTP 버전으로 나타낸다. 1.0, 1.1, 2.0 등이 있다.
Headers
- request에 대한 추가 정보를 담고 있는 부분이다.
- key: value 형식으로 되어 있다.
Body
- request의 실제 메세지 내용으로 Body가 없는 request도 있다.
- GET method에는 body가 담겨 있지 않다.
HTTP Response
HTTP response 형식
- HTTP version / status code / status text 로 구성되어 있다.
HTTP/1.1 404 Not Found
- HTTP version은
http request
부분에 설명했으므로 넘어간다. - status code
- 응답상태를 나타내는 코드 (숫자로 나타냄)
- status text
- 응답상태를 간략하게 설명해주는 부분 (status code에 따라 달리 나타내짐)
Headers
- Response의 header와 동일 (다만, response에서만 사용되는 header 값들이 있다)
Body
- Response의 body와 일반적으로 동일
- 모든 response에 body가 있지는 않다. 데이터가 비어있을 수 도 있다.
HTTP Method
- POST
- 데이터를 생성/수정/삭제 할때 주로 사용되는 Method
- GET
- 데이터를 서버로 부터 받아올때 주로 사용하는 Method로
생성/수정/삭제 없이
받아오기만 한다.
- 데이터를 서버로 부터 받아올때 주로 사용하는 Method로
- PUT
- 데이터를 생성 할때 사용되는 Method
- DELETE
- 특정 데이터를 서버에서 삭제 요청을 보낼때 사용되는 Method
HTTP 응답 상태 코드
2xx
- 200 : 클라이언트의 요청을 정상적으로 수행
- 201 : 클라이언트가 어떠한 리소스 생성을 요청, 해당 리소스가 성공적으로 생성됨(POST를 통한 리소스 생성 작업 시)
3xx
- 301 : 클라이언트가 요청한 리소스에 대한 URI가 변경 되었을 때 사용하는 응답 코드
4xx
- 400 : 클라이언트의 요청이 부적절 할 경우 사용하는 응답 코드
- 401 : 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청했을때 사용하는 응답 코드 (로그인 안한 유저가 로그인 했을때만 요청되는 리소스를 건드릴때)
- 403 : 유저 인증상태와 관계 없이 응답하고 싶지 않은 리소스를 클라이언트가 요청했을 때 사용하는 응답 코드
- 404 : 클라이언트가 서버와 통신할 수 있지만 서버가 요청한 바를 찾을 수 없다고 나타내는 응답 코드 (요청된 URI가 존재 하지 않을때)
- 405 : 클라이언트가 요청한 리소스에서 사용 불가능한 Method를 이용했을 경우 사용하는 응답 코드
5xx
- 500 : 서버에 문제가 있을 경우 사용하는 응답 코드
'network' 카테고리의 다른 글
쿠키와 세션에 대해서 (0) | 2021.08.25 |
---|---|
REST API (0) | 2021.06.14 |
API란? (0) | 2021.06.14 |