HTTP, 요청과 응답

Doyoon Lee·2020년 8월 5일
3

HTTP란?

HyperText(링크) Transfer Protocol 의 약자이다.

하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 Protocol (통신 규약)인데, 쉽게 생각하면 웹 상에서 통신을 할 때 어떤 형식으로 통신을 하자고 정해놓은 약속이다.

프론트엔드 서버 ←→ 클라이언트 간의 통신

프론트엔드 서버 ←→ 백엔드 서버 간의 통신

HTTP는 TCP / IP 기반 (무슨말? )

두개의 다른 서버가 소통하려면 공통의 언어가 필요해서

HTTP 라는 양식을 정해서 서로 전달하고 받자! 하고 언어를 정해놓은 것이다.


요청과 응답

요청(request) ← → 응답(response) 의 구조로 되어있다.

클라이언트가 서버에 HTTP request 를 보내고,

서버가 HTTP response 를 돌려보낸다.

클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어진다.

HTTP는 Stateless

HTTP 는 stateless 이다. 즉 State 를 저장하지 않는다.

위의 말의 의미는 요청/응답하는 정보가 저장되지 않는다는 뜻이다. (여러가지의 요청/응답 과정을 거칠 때 그것들끼리 연결되서 작동하는것이 아니다. )

클라이언트가 요청을 보내고 응답을 받은 후, 그 다음에 다시 요청을 보낼 때 그 전에 보낸 요청/응답에 대해 알지 못한다.



HTTP Request 의 구조

1. Starter line

해당 request 가 어떤 action 을 의미하는지 정보를 담는다. request target (url) 어떤 곳에다가 요청하는지를 담는다.

2. Headers

해당 request에 대한 추가 정보를 담고있는 부분이다.

Key:Value 값으로 되어있다.

Request Target도 주소. Host 도 주소. 두개를 합쳐서 보고 서버가 알게 된다.

3. Body

데이터가 담겨있는 부분이다. 여기서 내가 가졌던 의문은 Request 를 하는데 왜 정보를 담아서 보내야되지?하는 것이였다.

→ 클라이언트의 정보를 넘겨줘야, 서버에서 어떤 정보를 담아서 보내줘야할지 알려줄 수 있는 request들이 많다.

예를들면 유저의 로그인 정보를 담아서 서버쪽에 이런 사람이 로그인했다, 고 알려주면 서버측에서 그 사람의 프로필 사진은 뭔지, 그 사람이 어떤 사람을 팔로우하는지, 그런 정보들을 담아서 돌려보내줄것이다.

request 도 데이터를 담아서 요청할 수 있고, response 에서 데이터를 담아서 줄수 있다.

위에서 얘기한 어떤 사항들을 요청하는지는
Content-type 에 의해서 결정된다.

이런 내용들은 개발자도구 Network 패널에서 모두 확인 가능하다.


Request 의 예시

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 구조

Response 도 request와 마찬가지로 크게 3부분으로 구성되어있다.

1. Status Line

  • Response 의 상태를 간략하게 나타내주는 부분
  • 3부분으로 구성되어 있다.
    • HTTP 버전
    • Status code: 응답 상태를 나타내는 코드
    • Status text: 응답 상태를 간략하게 설명해주는 부분.

2. Headers

  • Response의 headers와 동일하다.
  • 다만 response에서만 사용되는 header 값들이 있다.
  • 예를 들어, User-Agent 대신에 Server 헤더가 사용된다.

3. Body

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


HTTP Method 란?

  • HTTP request가 의도하는 action을 정의한것.

GET

  • 요청 입장에서 데이터 가져올때
  • 이름 그대로 어떠한 데이타를 서버로 부터 받아(GET)올때 주로 사용하는 Method.

POST

  • 요청 입장에서 데이터를 포스팅할때
  • 데이터를 생성/수정/삭제 할때 주로 사용되는 Method.

PUT

  • 데이터를 생성 (POST 와 비슷한 기능)

DELETE

  • 데이터를 서버에서 삭제 요청

0개의 댓글