클라이언트-서버 사이에 Hyper Text (html문서)를 전송하기 위한 통신 규약
상태가 없는 프로토콜, 데이터를 주고 받기 위한 각각의 데이터 (요청/응답)이 서로 독립적으로 관리가 되기 때문에 과거의 (요청/응답)에 대한 내용을 전혀 알지 못한다.
따라서 클라이언트는 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.
하지만 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고 다수의 요청을 처리할 수 있고, 서버의 부하를 줄일 수 있는 성능 상의 이점이 있다
클라이언트가 서버에 필요한 데이터를 요청
GET / payment-sync HTTP/ 1.1
(1) (2) (3)
(1) HTTP Method - 요청이 의도한 동작 명시
(2) Request target - request가 전달될 목표 url
(3) HTTP Version - 사용되는 HTTP 버전, 주로 1.1
요청에 대한 메타 데이터를 담고 있는 부분
key:value 로 표현 된다.
Headers: {
Host: www.kurly.com
User-Agent: HTtPie/0.9.3
Content-Type: application/json
Content-Length: 83
Authorization: ~~~
}
Host: 요청을 받게될 웹사이트의 기본 주소
(ex. www.apple.co.kr)
User-Agent: 요청을 보내는 클라이언트의 대한 정보
(ex. chrome, firefox, safari, explorer)
Content-Type: 해당 요청이 보내는 메세지 body의 타입
(ex. application/json)
Content-Length: body 내용의 길이
Authorization: 회원의 인증/인가를 처리하기 위해 로그인 token을 담는 곳
HTTP 요청이 전송하는 실제 데이터를 담고 있는 부분
주로 body부분을 사용하는 methond는 POST이고, 전송하는 데이터가 없다면 body 부분은 비어 있게 된다.
{
"imp_uid": imp_1234567890",
"merchant_uid": order_id_8237352,
"status": "paid"
}
GET / payment-sync HTTP/ 1.1
Headers: {
Host: www.kurly.com
User-Agent: HTtPie/0.9.3
Content-Type: application/json
Content-Length: 83
Authorization: ~~~
}
{
"imp_uid": imp_1234567890",
"merchant_uid": order_id_8237352,
"status": "paid"
}
(1) HTTP Version - 사용되는 HTTP 버전
(2) Status Code - 응답 상태를 직관적으로 알려준는 숫자
(3) Status Text - status code에 더해 부가적으로 설명해주는 부분
HTTP request의 header 부분과 동일 대신 HTTP Response에만 사용되는 header 값들이 있다. User-Agent 대신 Server header 사용
HTTP request의 body 부분과 동일
어떤 데이터를 서버로부터 요청할 때 사용되는 method
데이터를 받아 오는 요청임으로 body가 비어있는 경우가 많다.
데이터를 생성하거나 수정 및 삭제 요청을 할 때 사용하는 method GET과 함께 가장 자주 사용되는 HTTP method다.
데이터를 생성 할 때 사용되는 method, POST로 처리 할 수 있으므로 PUT보다 POST를 사용
데이터를 삭제 할 때 사용되는 methond, PUT과 마찬가지로 POST로 처리 할 수 있으므로 Delete보다는 POST사용
HTTP 요청이 문제없이 성공적으로 처리 되었르 때 보내는 status code/text
HTTP 요청을 보낸 엔드포인트의 URL 주소가 바뀌었다는 것을 나태나는 status code/text
해당 엔드포인트의 새로운 주소가 포함된 Location header가 포함되는 것이 일반적이다.
location header에 포함된 새로운 주소에 해당 요청을 다시 보내게 되고 이 과정을 redirection이라고 한다.
HTTP 요청이 잘못된 오청일 때 보내는 status code/text 예를 들어 전화번호에 숫자가 아닌 문자가 포함된 경우
클라이언트의 신분확인이 요구되나 확인할 수 없을 때 보내는 status code/text 사용자가 로그인이 필요한 경우
클라이언트가 해당 요청에 대한 권한이 없음을 나타내는 status code/text, 유료 contents를 이용 할 때, 비용을 지불하지 않은 상태일 경우 서버는 403 응답을 보낼 수 있다.
HTTP 요청을 보내고자 하는 URI가 존재하지 않을 때 보내는 응답 코드
내부 서버 오류가 발생했다는 것을 알려 주는 응답 코드
요청을 받은 서버에서 해당 요청을 처리하는 과정에서 서버 오류(error)가 나서 해당 요청을 처리할 수 없을 때 사용하는 응답 코드