✅ 학습 목표
- API 엔드 포인트인 Controller 의 구성요소 이해
- 실제 동작하는 Controller의 기본 기능 구현
Controller 클래스 설계 및 구조 생성
1. 애플리케이션의 경계 설정
2. 애플리케이션 기능 구현을 위한 요구사항 수집
3. 패키지 구조 생성 (Spring Boot에서 계층 기반 패키지 구조보다 기능 기반 패키지 구조 권장)
4. Controller 설계
- '클라이언트로부터 발생할 요청에는 어떤 것들이 있을까'
- REST API 기반의 애플리케이션에서는 애플리케이션이 제공해야 될 기능을 리소스(Resource, 자원)로 분류
- 리소스에 해당하는 Controller 클래스를 작성하면 됨
5. main() 메서드가 포함된 애플리케이션의 엔트리포인트(Entrypoint, 애플리케이션 시작점) 클래스 작성
- Sprintg Initializr 를 통해 생성한 프로젝트에는 이미 작성 돼 있음
@SpringBootApplication 의 역할
자동 구성 활성화
애플리케이션 패키지 내 @Component 가 붙은 클래스를 스캔
@Configuration이 붙은 클래스를 찾아서 Spring Bean을 등록하는 기능 활성화
Controller Annotation
- @RestController
해당 클래스가 REST API의 리소스를 처리하기 위한 API 엔드포인트로 동작함을 정의
해당 클래스는 Spring Bean으로 등록됨
- @RequsetMapping
클라이언트의 요청과 클라이언트 요청을 처리하는 핸들러 메서드를 매핑해주는 역할
클래스 전체에 사용되는 공통 URL(Base URL) 설정
더보기
REST API Resource 접근 URI 작성 규칙
https://itvillage.tistory.com/35
@SpringBootApplication 의 구체적인 기능
https://itvillage.tistory.com/36
Spring 애플리케이션의 부트스트랩(Bootstrap) 과정
핸들러 메서드(Handler Method)
- Spring MVC 에서 HTTP Method 유형과 매치되는 @GetMApping, @PostMApping 등의 애너테이션을 지원
- @PathVariable 애너테이션을 사용하면 클라이언트 요청 URI에 패턴 형식으로 지정된 변수의 값을 피라미터로 전달받을 수 있음
- @RequestParam 애너테이션을 사용하면 쿼리 파라미터, 폼 데이터, x-www-form-urlencoded 형식의 데이터를 파라미터로 전달 받을 수 있음
더보기
Controller의 핸들러 메서드 파라미터 추가 내용
https://itvillage.tistory.com/41
HTTP 미디어 타입(Media Type)
- 미디어 타입(Media Type)이란?
- 미디어 타입(Media Type), MIME Type, Content Type
응답 데이터에 ResponseEntity 적용
return new ResponseEntity<>(map, HttpStatus.CREATED);
- Map 객체를 리턴하게 되면 내부적으로 ‘이 데이터는 JSON 형식의 응답 데이터로 변환해야 되는구나’라고 이해하고 JSON 형식으로 자동 변환
- 리턴 값으로 단순히 Map객체를 리턴해도 클라이언트 쪽에서는 정상적으로 JSON 형식의 응답 데이터를 받을 수 있음
- 하지만 ResponseEntity 객테로 응답 데이터를 래핑함으로써 좀 더 세련된 방식으로 응답 데이터 생성 가능
더보기
HTTP 응답 상태 종류
출처
'부트캠프 기록 > Section3' 카테고리의 다른 글
[Spring MVC] JBDC 기반 데이터 엑세스 계층 (0) | 2022.10.30 |
---|---|
[Spring MVC] API 계층_DTO(Data Transfer Object) (0) | 2022.10.29 |
[Spring MVC] 예외처리 (0) | 2022.10.27 |
[Spring MVC] DTO 클래스와 Entity 클래스의 역할 분리 이유 (0) | 2022.10.24 |
[Spring MVC] Spring MVC 아키텍처 (0) | 2022.10.22 |