- Client 와 Server 간 Request, Response 는 HTTP 메시지 규약을 따름
- HTTP 메시지는 웹 서비스 개발자(백엔드, 프론트 개발자)에게 매우 중요한 내용!
HTTP의 구조
HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다.
메시지 타입은 두 가지가 있습니다.
요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지고,
응답(response)은 요청에 대한 서버의 답변입니다.
Request와 Response는 startline, header, body등 3개의 구조로 나눠져 있습니다.
Request와 Response 각각의 구조를 조금 더 면밀히 살펴보도록 하겠습니다.
Reqest
Startline
- api 호출 부분입니다.
- 메서드, url, http version에 대한 정보가 나타나 있습니다.
GET **naver.com** HTTP/1.1
Header
헤더에서 가장 중요한 부분은 Content type일 것입니다.
Content type은 <form>태그로 요청하는 경우와 AJAX로 요청하는 경우에 따라 다르게 작성이 됩니다.
각각을 살펴보도록 하겠습니다.
1. HTML <form> 태그로 요청 시
Content type: application/x-www-form-urlencoded
2. AJAX 요청 시
Content type: application/json
Body
GET 요청 시: (보통) 없음
POST 요청 시: (보통) 사용자가 입력한 폼 데이터
name=홍길동&age=20
Response
Startline
http의 version 정보와, 상태 코드, 상태 텍스트를 나타내고 있습니다.
HTTP/1.1 404 Not Found
Header
Response의 header부분 또한 Content type이 가장 중요합니다.
Request에서는 form과 AJAX 두가지로 나눠졌지만
Response Header 에서는 HTML과 JSON 두가지로 나눠지고 있습니다.
1. Content type
1-1. Response Body 내용이 HTML인 경우
Content type: text/html
1-2. Response Body 내용이 JSON인 경우
Content type: application/json
Response는 Header 부분에서 Contetn type만 살펴보았지만
Requestsms Header 부분에서 Location도 같이 살펴보도록 하겠습니다.
2. Location
2-1. Redirect 할 페이지 URL의 대한 정보가 들어있습니다.
Location: http://localhost:8080/hello.html
Body
1. body의 내용이 HTML인 경우
<!DOCTYPE html>
<html>
<head><title>By @ResponseBody</title></head>
<body>Hello, Spring 정적 웹 페이지!!</body>
</html>
2. body의 내용이 JSON인 경우
{
"name":"홍길동",
"age": 20
}
Reference
Spring 심화반 1주차 [스파르타 코딩클럽]
'강의 > 모든 개발자를 위한 HTTP' 카테고리의 다른 글
HTTP 메서드의 속성 (0) | 2022.04.21 |
---|---|
HTTP API 생성 (0) | 2022.04.21 |
HTTP Response의 이해 (@Controller, @RestController) (0) | 2022.03.26 |
HTTP (0) | 2022.03.08 |