: Hyper Text Transfer Protocol: HTML(문서, 텍스트)을 교환하기 위해 만들어진 통신규약.
'데이터가 전송된다'라는 것: 텍스트를 보내는 것, 이해할 수 있는 통신 규약을 통해서 HTML에 맞춰 만들어진 통신규약(프로토콜)
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조.
클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어짐.
요청을 보냈는데 응답이 오지 않으면 에러가 뜸.
요청을 보내는 주체: 사용자가 사용하는 웹 브라우저
요청을 보내는 주체: 백엔드 API
(frontEnd) --request
--> (webBrowser),
rendering --data request
--> (backEnd) --response
--> (webBrwoser)
: request
구조: start line, headers, body
start line: http request
의 첫 번째 라인으로 HTTP Method(요청이 원하는 방법), Request target(end Point), HTTP version 으로 이루어져 있다.
a) HTTP Method
GET
, POST
, PUT
, DELETE
, OPTIONS
등등이 있다.GET
과 POST
가 쓰임b) Request target
/login
.c) HTTP Version
1.0
, 1.1
, 2.0
등이 있다.HOST: google.com
=> Key = HOST / Value = google.comapplication/json
.Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3
3. Body
- 해당 request의 실제 메세지 내용
- Body가 없는 request도 많다.
예를 들어, Get request 들은 대부분 Body가 없는 경우가 많다(요청이므로)
POST /payment-sync HTTP/1.1
Accept: application/json
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",
"merchant_uid": "order_id_8237352",
"status": "paid" // 주문을 결제하는 텍스트의 http
}
** https는 http를 암호화한 정보로 쉽게 확인할 수 있는 http의 정보에 암호를 걸어 쉽게 정보에 접근할 수 없게 한 것.
# HTTP이 응답 구조(HTTP Response)
: Status Line, Headers, Body 로 이루어져 있다.
1. Status Line
: response의 상태를 간략하게 나타내주는 부분. 3부분으로 구성되어 있다.
HTTP Version, Status Code, Status text
1) Status code: 응답 상태를 나타내는 코드. 숫자로 되어 있다.
예를 들어, `200`
2) Status text: 응답 상태를 간략하게 설명해주는 부분
예를 들어, "Not Found"
HTTP/1.1 404 Not Found
2. Headers
- Request의 headers와 동일
- 다만 response 에서만 사용되는 headers 값들이 있다.
3. Body
- Response의 body와 일반적으로 동일.
- Request와 마찬가지로 모든 response가 body가 있지는 않다. 데이터를 전송할 피요가 없을경우 body가 비어있게 됨.
reference: https://stackoverflow.com/c/wecode/questions/308