HyperText Transfer Protocol
하이퍼텍스트(HTML)문서를 교환하기 위해 만들어진 protocol(통신규약)
웹상에서 네트워크로 서버끼리 통신할 때 어떠한 형식으로 서로 통신을 하자고 규정해놓은 것(통신형식, 통신구조)
통신방식
- 클라이언트가 요청을 보내고 응답을 받은 후, 나중에 다시 요청을 보낼 때 전의 요청/응답에 대해 알지못함
- 만약 요청/응답의 진행과정이나 데이터가 필요할 때는 쿠키나 세션등을 사용한다.
1. start line(HTTP request의 첫라인)
- HTTP Method
- 해당 request가 의도한 것을 정의하는 부분
- HTTP Methods에는 GET, POST, PUT, DELETE, OPTIONS 등이 있다.
- Request target
- 해당 request가 전송되는 목표 uri
- ex) /login, /search
- HTTP Version
- 사용되는 HTTP버전
- 1.0, 1.1, 2.0 등이 있다.
GET /search HTTP/1.1
2. headers
- 해당 request에 대한 추가 정보를 담고 있는 부분
- Key : Value 값으로 되어있다.
- Headers도 크게 3부분으로 나뉘어짐(general headers, request headers, entity headers)
- 자주 사용되는 headers 정보
- Host
요청이 전송되는 target의 host url:
- User-Agent
요청을 보내는 클라이언트의 대한 정보, 웹브라우저에 대한 정보.
- Accept
해당 요청이 받을 수 있는 응답(response) 타입.
- Connection
해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지 할것인지 아니면 끊을것인지에 관한 정보
- Content-Type
해당 요청이 보내는 메세지 body의 타입.
- Content-Length:
메세지 body의 길이.
Accept: */*
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3
3. Body
- 클라이언트가 요청한 것의 실제 내용이 담겨있다.
- 하지만 body가 없는 것도 있음
POST /payment-sync HTTP/1.1 ## start line
Accept: application/json ## headers
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: intropython.com
User-Agent: HTTPie/0.9.3
{
"imp_uid": "imp_1234567890", ## body
"merchant_uid": "order_id_8237352",
"status": "paid"
}
1. status line
- response의 상태를 간략하게 나타내준다.
- HTTP 버전
- Status code: 응답 상태를 나타내는 코드. 숫자로 되어 있는 코드.
- Status text: 응답 상태를 간략하게 설명해주는 부분.
HTTP/1.1 404 Not Found
2. headers
- HTTP request의 headers와 동일
- 그러나 respons에서만 사용되는 header값들이 있음
ex) User-Agent 대신에 Server 헤더가 사용된다.
3. Body
- body도 request와 동일
- 데이터를 전송할 필요가 없을경우 body가 비어있게 된다.
GET
POST
PUT
DELETE
OPTIONS
200 OK
문제없이 잘 실행될때 보내는 코드
301 Moved Permanently
해당 uri가 다른 주소로 바뀌었을때 보내는 코드
400 Bad Request
해당 요청이 잘못된 요청일때 보내는 코드. 주로 요청에 포함된 input 값이 잘못된 값일때 사용되는 코드
401 Unauthorized
유저가 해당 요청을 진행하려면 회원가입이나 로그인 등을 해야 진행할 수 있다는것을 알려주는 코드
403 Forbidden
유저가 해당 요청에 대한 권한이 없다는 코드
404 Not Found
요청된 uri가 존재하지 않다는 코드
500 Internal Server Error
서버에서 에러가 났을 때 보내는 코드