HTTP

Nam Eun-Ji·2020년 11월 26일
0

HTTP

목록 보기
1/9

Hyper Text Transfer Protocol
하이퍼텍스트 문서(HTML)를 교환하기 위해 만들어진 통신 규약

  • 웹상에서 네트워크로 서버끼리 통신을 할 때 어떠한 형식으로 서로 통신을 하자고 규정해 놓은 "통신 형식" 혹은 "통신 구조"
  • 프론트앤드 서버와 클라이언트간의 통신에 사용되며, 백앤드와 프론트앤드 서버간에의 통신에도 사용됨
  • HTTP는 TCP/IP 기반으로 되어있음
  • 개발자도구>네트워크에서 확인 가능





HTTP의 2가지 중요한 속성

request/ response

  • HTTP는 기본적으로 요청(request) / 응답(response) 구조로 되어있음
  • 클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조
  • 때문에 request가 들어왔을 때 response가 없다면 에러가 남
  • 백앤드에 요청을 보내는 것은 프론트앤드에서 요청을 보내는 것이 아니고, 웹브라우저가 요청을 보내는 것

stateless

  • Stateless 는 말그대로 state(상태)를 저장하지 않는다는 뜻
  • 각각의 요청/응답은 독립적인 요청/응답으로서, 각각의 통신들은 자신의 통신정보만 알고 있을 뿐, 다른 통신의 내역은 알 수 없음.
  • 그래서 만일 여러 요청과 응답의 진행과정이나 데이터가 필요할 때는 쿠키나 세션 등을 사용하게 됨
    예를 들면 로그인통신, vip대상주식정보요청통신, ...
    → 주식정보요청통신을 했을 때 로그인통신정보를 알 수 없음
    → 2번째 요청(주식정보요청통신)을 보낼 때 웹브라우저의 쿠키와 세션을 이용하여 1번째 통신정보(로그인통신)를 header에 붙여서 같이 보냄



HTTP request

http request는 start line → headers → body로 이루어져 있음

start line

GET /search HTTP/1.1

HTTP Method
request가 의도한 action을 정의하는 부분. GET, POST, PUT, DELETE, OPTIONS 등이 있음.

Request target
해당 request가 요청하는 endpoint(uri)

HTTP Version
HTTP 버전. 버전에는 1.0/1.1/2.0등이 있음

headers

request에 대한 정보/메타 데이터

  • headers는 key:value 값으로 되어있음
    ex) HOST: google.com → key: HOST, value = google.com

  • headers는 general headers, request headers, entity headers로 나뉘어져 있음

  • 자주 사용되는 headers 정보

    • Host : 요청이 전송되는 target의 host / ex. google.com
    • User-Agent : 요청을 보내는 클라이언트의 대한 정보 / ex. web browser에 대한 정보 → retargeting ad 사용
    • Accept : 해당 요청이 받을 수 있는 응답 타입
    • Connection : 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 컨넥션을 유지할 것인지 끊을 것인지에 대한 지시 부분
    • Content-Type : 해당 요청이 보내는 메세지 body의 타입 / ex. JSON을 보내면 application/json
    • Content-Length : 메세지 body의 길이

body

해당 request의 실제 내용

  • body에 보내는 내용은 주로 객체형태로 보냄
  • 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 response

http response는 status line → headers → body로 이루어져 있음

status line

response의 상태를 간략히 알려주는 부분

HTTP/1.1 404 Not Found

HTTP version

status code
응답상태를 나타내주는 코드(숫자로 되어있음)

status text
응답상태를 간략히 설명해주는 메세지

headers

request의 headers와 동일
다만 response에서만 사용되는 header값들이 있음 ex) User-Agent 대신 Server

body

Response의 body와 일반적으로 동일
Request와 마찬가지로 모든 response가 body가 있지는 않음. 데이터를 전송할 필요가 없을 경우 body가 비어있게 됨.



profile
한 줄 소개가 자연스러워지는 그날까지

0개의 댓글