API 계층 = 클라이언트의 요청을 직접적으로 전달 받는 계층
Controller = 클라이언트 요청의 최종 목적지(엔드포인트)
애플리케이션 엔트리포인트 = main() 메서드가 포함된, 애플리케이션의 시작점
@SpringBootApplication : 스프링 부트 애플리케이션 엔트리포인트 어노테이션
1. 자동 구성을 활성화
2. 애플리케이션 패키지 내에서 자동으로 @Component 를 스캔해주고, Spring Bean 으로 등록
3. @Configuration 클래스 찾아주고, 추가적으로 Spring Bean 등록
* @Component vs @Configuration
1) @Component - 개발자가 직접 작성한 클래스 직접 bean 으로 등록
2) @Configuration + @Bean - 라이브러리 혹은 내장 클래스등 개발자가 직접 제어가 불가능한 클래스의 경우
메서드 등에 직접 @Bean 달아서 등록
Controller ex)
package com.codestates.member;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/v1/members")
public class MemberController {
}
@RestController
1. 특정 리소스에 추가시 해당 클래스가 REST API의 리소스를 처리하기 위한
API 엔드포인트로 동작함을 정의한다
2. @RestController 추가되어있으면 Spring Bean으로 등록해줌
@RequestMapping
1. 클라이언트 요청 ~ 핸들러 메서드를 매핑해줌 (*핸들러 메서드 : 클라이언트 요청을 처리)
2. 클래스 전체에 사용되는 공통 URL (Base URL) 설정해줌
*REST API URI 작성 규칙
1. 마지막이 '/'로 끝나지 않을 것
2. 동사 < 명사
3. 단수형 < 복수형
4. 기본 소문자
5. '_' 대신에 '-' 사용
핸들러 메서드 (Handler Method)
@PostMapping
: 클라이언트 요청 데이터(Request Body)를 서버에 생성할 때 사용
@RequestParam
: 핸들러 메서드의 '파라미터' 종류 중 하나
클라이언트에서 쿼리 파라미터, 폼 데이터, x-www-form-urlencoded 형식으로 전송할 경우
서버쪽에서 전달 받을 때 사용하는 어노테이션
@GetMapping
: 클라이언트가 서버에 리소스를 조회할 때 사용하는 어노테이션
@PathVariable
: 핸들러 메서드 파라미터 종류 중 하나
+
@PutMapping : 리소스의 모든 정보 수정시에 사용
@PatchMapping : 리소스의 일부 정보만 수정시에 사용
@DeleteMapping : 서버의 리소스 삭제할 때 사용
*핸들러 메서드 파라미터 추가 학습
Controller 핸들러 메서드의 Argument 알아보기
Controller의 핸들러 메서드는 다양한 유형의 Argument(인수)를 지원합니다. 그 중에서 REST API 애플리케이션에서 자주 사용되는 유형의 Argument를 간단히 살펴보도록 하겠습니다. Method Argument 설명 @Reque
itvillage.tistory.com
@RequestBody 정도만 눈에 익숙하다.
Controller 속 ResponseEntity 객체 :
HTTP 요청(Request) or 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스
'Spring' 카테고리의 다른 글
[Spring] 서비스 계층 (Service Layer) @Service, @Mapper (0) | 2022.10.24 |
---|---|
[Spring] DTO 란? (Data Transfer Object) (0) | 2022.10.21 |
[Spring] Spring MVC란? (0) | 2022.10.21 |
[Spring] AOP가 필요한 이유, AOP 용어 / Advice, Pointcut, JointPoint (0) | 2022.10.18 |
[Spring] Java 기반 컨테이너, Component Scan, 의존 관계 주입 방법 (0) | 2022.10.18 |
댓글