HTTP 프로토콜
- HTTP란 서버와 클라이언트 사이의 데이터 전송 프로토콜이다.
- 데이터를 요청(Request)하는쪽이 클라이언트, 데이터를 제공하거나 기능을 처리(Response)하는 쪽을 서버라고 한다.
- 크게 다섯가지의 상태코드를 가진다.
1. 1XX : 임시응답, 현 상태의 정보를 응답하는데 사용
2. 2XX : 응답 성공, 요청 및 처리가 정상적으로 이루어졌다는 의미로 사용
3. 3XX : 클라이언트 요청을 처리하는데 추가적인 작업이 필요하다는 의미(URL 변경 안내 등)
4. 4XX : 클라이언트가 전송한 요청이 에러가 있음을 의미(인가되지 않음, 잘못된 요청 등)
5. 5XX : 서버가 요청을 처리하는 중 에러가 발생했음을 의미
- 비연결성(Connectionless)와 무상태(Stateless)의 특징을 가진다.
1. 비연결성 : HTTP 프로토콜은 서버와 클라이언트가 커넥션을 유지할 필요가 없다.
2. 무상태 : 이전 요청과 상관없이 모든 요청은 독립적으로 처리된다.
스프링 웹 MVC 프레임워크
- MVC 패턴 : 웹 어플리케이션 구조를 역할에 따라 3가지로 분류하여 수행하도록 하는 패턴
1. Controller : 사용자의 요청을 받아 어떻게 처리할지 결정한다.
2. Model : 컨트롤러에서 받은 사용자 요청 데이터나, DB에서 가져온 데이터를 처리한다. 비즈니스 로직을 담당한다.
3. View : 처리된 결과를 모델에서 받아와 사용자에게 적절한 형태로 반환한다.
Dispatcher Servlet
- 서블릿이란 클라이언트의 요청을 처리하고 그 결과를 반환해주는 자바 웹 프로그래밍 기술이다.
- 스프링은 이러한 클라이언트의 요청을 처리하기 위해 Dispatcher Servlet 컴포넌트를 사용한다.
- DispatcherServlet은 프런트 컨트롤러 패턴으로 디자인 되어있다. 프런트 컨트롤러 패턴이란,
프런트 컨트롤러가 모든 사용자의 요청을 받고 이 요청을 분석해 적절한 컴포넌트(컨트롤러들)에게 전달한다.
- HandlerMapping은 @RequestMappin 애너에티션 속 정보를 로딩하여,
HTTP 요청 메세지를 추상화한 HttpServletRequest 객체의 내용에 따라 적절한 컨트롤러로 전달한다.
Spring Boot 설정
- 스프링 부트는 내부에 WAS를 함께 제공하여 별도로 WAS를 설치하지 않고 java 실행 명령으로만으로도 서버를 구동시킬 수 있다.
- 스프링 부트 프레임워크로 웹 어플리케이션을 설정하려면 다음 두가지만 작업하면된다.
1. spring-boot-starter-web 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-web'
build.gradle의 dependencies에 위와 같은 의존성을 추가해준다.
2. application.yml에 서버 포트 설정
server:
port: 18000 // 포트 번호 설정
tomcat:
connection-timeout: 30s // 서버와 클라이언트간 커넥션 지속 시간 설정
threads: // 톰캣 서버의 스레드 풀 최대 최소 값 설정
max: 100
min-spare: 100
accesslog: // 톰캣 서버의 액세스 로그 관련 설정
enabled: true
suffix: log
prefix: access_log
rename-on-rotate: true
REST API
- REST API는 다음 세가지 요소로 구성된다.
1. 리소스(Resource) : HTTP URI("/members/new")
2. 행위(Verb) : HTTP METHOD("GET, POST, PUT, DELETE")
3. 표현(Representation) : HTTP 메시지(JSON 데이터)
- REST API 설계시 다음 기본 규칙을 준수해야 한다.
1. 리소스 이름은 가능한 동사보다 명사를 사용한다.
2. 리소스는 계층적 구조를 가질 수 있다. 만약 가진다면 복수 형태를 사용한다.("/members/{uniqueId}")
3. 행위는 GET, POST, PUT, DELETE를 기본으로 사용하며, 때에 따라 PATCH를 사용한다.
가. GET : 리소스의 정보를 조회하는 메서드
나. POST : 클라이언트의 데이터를 바탕으로 리소스를 생성한다.
다. PUT : 정의된 리소스를 전송받은 데이터로 전체 수정한다.
라. DELETE : 정의된 리소스를 삭제한다.
마. PATCH : 정의된 리소스의 일부 데이터를 수정한다.
- 설계 및 구현에 다음 세가지 특성을 지켜야 한다.
1. 무상태성 : HTTP 프로토콜의 무상태성을 지켜야 한다.
2. 일관성 : API의 리소스나 응답 메세지를 설계 할 때, 일관된 규칙과 반복되는 패턴을 사용하여야 한다.
3. 멱등성 : 같은 API를 여러번 실행하여도 같은 결과를 도출해야 한다.
'공부 > Spring Boot' 카테고리의 다른 글
[스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (3) (0) | 2022.12.17 |
---|---|
[스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (2) (0) | 2022.12.16 |
[스프링 부트 공부 일지] 3. 스프링에서 REST API 개발하기 (1) (0) | 2022.12.16 |
[스프링 부트 공부 일지] 1. 스프링 애플리케이션 (0) | 2022.12.15 |
[스프링 부트 공부 일지] 0. 공부를 시작하며 (0) | 2022.12.13 |