HTTP를 Spring에 넣는게 약간 고민되긴 하지만 어쨋든 알아야 하니까.. ㅎ..
Hyper Text Transfer Protocol - 텍스트를 전송하기 위한 프로토콜 = 약속, 규칙
1. 무상태 Stateless
- 각 요청을 별개의 요청으로 취급하므로 클라이언트의 이전 요청 상태를 기억하지 않습니다.
- 상태 정보를 유지하려면 쿠키, 세션, 토큰 등을 이용해야 합니다.
2. 클라이언트 - 서버 모델
- HTTP 클라이언트가 요청을 보내고, 서버가 요청을 처리하여 응답을 반환하는 구조를 가집니다.
- 클라이언트와 서버는 독립적으로 동작합니다.
3. 확장성
- HTTP는 헤더 필드를 통해 확장이 가능합니다.
- 표준 헤더 외에도 사용자 정의 헤더를 추가하여 필요한 정보를 주고받을 수 있습니다.
4. 유연한 데이터 형식
- HTML, XML, JSON, 이미지, 비디오, 파일 등을 포함하여 다양한 MIME 타입을 지원합니다.
- 웹 페이지, API, 파일 전송 등을 쉽게 구현할 수 있습니다.
HTTP는 텍스트 기반 프로토콜인데 어떻게 파일이나 이미지나 동영상 등 다양한 형식의 데이터를 전달할 수 있는걸까요?
Multipurpose Internet Mail Extensions이 콘텐츠 형식을 명확히 정의하여 클라이언트와 서버가 데이터를 정확히 해석하고 처리할 수 있도록 합니다.
MIME 타입은 '타입/서브타입' 형식입니다. 예를 들어 text/html, image/jpeg, video/mp4, application/json 이런 형태를 띄고 있습니다. 요청할 때는 Accept 헤더로, 응답할 떄는 Content-Type 헤더를 통해 사용됩니다.
GET /index.html HTTP/1.1
Host: www.example.com
Accept: text/html // 데이터 타입
HTTP/1.1 200 OK
Content-Type: text/html // 데이터 타입
Content-Length: 137
5. 요청-응답 구조
- HTTP는 클라이언트 - 서버 모델을 따르며, 클라이언트는 요청을 보내고 서버는 응답하는 구조입니다.
- 일반적으로 클라이언트는 브라우저, 서버는 웹 서버 입니다.
// HTTP GET 요청
GET /index.html HTTP/1.1
Host: www.example.com
// HTTP 응답 헤더
HTTP/1.1 200 OK // 상태 코드
Content-Type: text/html // 데이터 형식
Content-Length: 48
// 응답 바디
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
// 엄청 간단한 요청-응답 메시지
6. HTTP 메서드
- GET, POST, PUT, DELETE, PATCH등 메서드를 통해 서버에 요청할 작업을 정의합니다.
더보기
* PUT과 PATCH 모두 서버 리소스를 업데이트할 때 사용되는데 PUT은 전체 리소스를 업데이트할 때, PATCH는 일부 리소스를 업데이트할 때 사용됩니다. 예를 들어 사용자 리소스에 이름과 이메일이 있다면 PUT은 이름과 이메일 모두 변경할 때 사용하고, PATCH는 이메일만 변경할 때 사용합니다.
7. 상태 코드
- HTTP 응답 헤더에는 상태 코드가 포함되어 있습니다.
- 2xx(성공), 4xx(클라이언트 오류), 5xx(서버 오류) 등이 있습니다.
8. 보안
- HTTPS는 SSL/TLS를 사용하여 데이터 전송을 암호화합니다.
- 데이터 기밀성, 무결성, 인증을 보장합니다.
'Spring' 카테고리의 다른 글
Spring 이론 - 클라이언트와 서버 Tomcat / Servlet / JSP (0) | 2024.06.06 |
---|---|
spring MVC가 뭔데여(근데 이제 spring framework 특징을 곁들인) (0) | 2024.05.22 |
spring Annotation 모음 (0) | 2024.05.22 |