이론 공부/네트워크 통신

HTTP Request & Response

김꿍디꿍디 2024. 4. 26. 11:33
반응형

구조


  • Reuest : Client가 Server로 Request를 보낸다.
  • Reponse
    • Server은 Client로부터 Response를 받는다.
    • Request를 처리한다.
    • Resources에서 data를 가져와 Client에게 Response를 전달한다.

Request


Start Line + Headers + Body

Start Line

HTTP Method, Request target, HTTP version으로 구성

GET /test.html HTTP/1.1
[HTTP Method] [Request target] [HTTP version]

 

* HTTP Method : 요청의 의도를 담고 있는 GET, POST, PUT, DELETE 등이 있다.

- GET : 존재하는 자원에 대한 요청

- POST : 새로운 자원을 생성

- PUT : 존재하는 자원에 대한 변경

- DELETE : 존재하는 자원에 대한 삭제

 

* Request target : HTTP Request가 전송되는 목표 주소

Headers

request에 대한 추가 정보를 담고 있는 부분

Key:Value 형태로 구성 

general headers, request headers, entity headers 3가지 부분으로 나뉨 

Host: google.com
Accept: text/html
Accept-Encoding: gzip, deflate
Connection: keep-alive
...

Body

request가 전송하는 data를 담고 있는 부분 

전송하는 데이터가 없다면 비어있음 

POST 요청인 경우 HTML form 데이터가 포함되어 있음  

POST /test HTTP/1.1

Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: google.com
User-Agent: HTTPie/0.9.3

{
    "test_id": "tmp_1234567",
    "order_id": "8237352"
}

Response 


Status Line + Headers + Body

Status Line

HTTP Response의 상태를 간략하게 나타내주는 부분 

HTTP version, Status Code, Status Text로 구성

HTTP/1.1 200 OK
[HTTP version] [Status Code] [Status Text]

 

* Status Code

- 2xx : Successful Responses 

   - 200 OK : 요청이 성공적으로 된 경우 

   - 201 Create : 요청이 성공적이었으며 그 결과로 새로운 리소스가 생성된 경우

- 3xx : Redirection Messages 

- 4xx : Client Error Responses

   - 404 Not Found : 서버에서 요청받은 리소스를 찾을 수 없는 경우 

- 5xx : Server Error Responses

Headers

requests의 headers와 동일하지만 response에서만 사용되는 header 값이 있음 

Body

request가 요청한 data를 담고 있는 부분  

{
    "test_id": "tmp_1234567",
    "order_id": "8237352"
}

 

내가 생각하는 주요 요소 3가지


HTTP Method

HTTP Method로 Create, Read, Update, Delete (CRUD)와 같은 기본적인 데이터 작업을 지원하고 

동일한 URI더라도 Method를 다르게 하여 작업의 형태를 표현할 수 있다.

이를 통해 웹 애플리케이션은 다양한 데이터 조작을 수행할 수 있기 때문에 주요하다. 

Status Code

Response 상태 코드가 있어야 상태 코드는 클라이언트에게 요청이 성공적으로 처리되었는지 여부를 알 수 있고 이에 따른 에러 핸들링도 할 수 있기 때문에 주요하다.

Header

Header를 통해 사용자 정보 등의 메타 데이터로 인증을 위한 정보를 전달할 수 있어 보안과 효율성을 높이는 데 기여할 수 있기 때문에 주요하다.

반응형