구조
- Reuest : Client가 Server로 Request를 보낸다.
- Reponse
- Server은 Client로부터 Response를 받는다.
- Request를 처리한다.
- Resources에서 data를 가져와 Client에게 Response를 전달한다.
Request
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
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를 통해 사용자 정보 등의 메타 데이터로 인증을 위한 정보를 전달할 수 있어 보안과 효율성을 높이는 데 기여할 수 있기 때문에 주요하다.
'이론 공부 > 네트워크 통신' 카테고리의 다른 글
인증 | 쿠키(Cookie), 세션(Session), 토큰(Token), JWT (0) | 2024.11.12 |
---|---|
SSE(Server Sent Event) | Polling과 SSE (4) | 2024.11.11 |