728x90
728x90
스프링 부트 @RestController와 @RequestMapping을 이용한 REST API 개발 심층 분석
서론
스프링 부트는 간편하고 효율적인 개발 환경을 제공하여 REST API 개발을 획기적으로 용이하게 만들었습니다. 특히, @RestController와 @RequestMapping 애노테이션은 REST API 개발의 핵심 구성 요소로 자리매김하며 개발자들의 생산성을 크게 향상시켰습니다.
본 글에서는 스프링 부트를 이용한 REST API 개발의 기본 개념부터 심층적인 내용까지 상세하게 다루어, REST API 개발에 대한 이해를 높이고 실제 개발에 적용할 수 있도록 돕고자 합니다.
1. REST API란 무엇인가?
REST(Representational State Transfer)는 웹 서비스를 위한 아키텍처 스타일로, HTTP 프로토콜을 사용하여 자원(resource)을 주고받는 방식입니다. REST API는 JSON, XML 등의 표현 방식을 통해 클라이언트와 서버 간의 데이터 교환을 효율적으로 수행합니다.
- 주요 특징:
- 자원 기반: 각각의 자원은 고유한 URI를 가지며, HTTP 메서드(GET, POST, PUT, DELETE 등)를 통해 조작됩니다.
- Stateless: 각 요청은 독립적으로 처리되며, 서버는 클라이언트의 상태를 유지하지 않습니다.
- 표준화된 인터페이스: HTTP 메서드와 상태 코드를 사용하여 표준화된 인터페이스를 제공합니다.
2. 스프링 부트에서 REST API 개발하기
2.1. @RestController 애노테이션
- 정의: @Controller와 @ResponseBody를 합친 애노테이션으로, HTTP 요청을 처리하고 그 결과를 HTTP 응답 본문에 직접 반환합니다.
- 역할: REST API 컨트롤러를 선언하고, 메서드의 반환값을 HTTP 응답으로 변환합니다.
2.2. @RequestMapping 애노테이션
- 정의: HTTP 요청과 특정 메서드를 매핑하는 애노테이션입니다.
- 역할: 클래스 레벨 또는 메서드 레벨에 사용되며, URI 패턴, HTTP 메서드, 헤더 등을 기반으로 요청을 처리할 메서드를 지정합니다.
728x90
2.3. 간단한 예제
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users")
public List<User> getAllUsers() {
// 사용자 목록 조회 로직
return userList;
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// 사용자 생성 로직
return userRepository.save(user);
}
}
- 위 예제는 /api/users 엔드포인트에서 사용자 목록을 조회하고, 새로운 사용자를 생성하는 REST API를 정의합니다.
- @GetMapping, @PostMapping은 각각 GET, POST 메서드를 처리하는 애노테이션입니다.
- @RequestBody는 요청 본문에 포함된 JSON 데이터를 Java 객체로 변환합니다.
3. REST API 설계 고급 기능
3.1. HTTP 메서드 활용
- GET: 자원 조회
- POST: 새로운 자원 생성
- PUT: 기존 자원 전체 업데이트
- PATCH: 기존 자원 부분 업데이트
- DELETE: 자원 삭제
3.2. URI 설계
- 자원 중심: 명사를 사용하여 자원을 표현
- 계층 구조: 슬래시(/)를 사용하여 자원 간의 관계 표현
- 동사는 HTTP 메서드로 표현
3.3. 상태 코드 활용
- 2xx: 성공
- 4xx: 클라이언트 에러
- 5xx: 서버 에러
3.4. 커스텀 헤더 활용
- 요청/응답에 추가적인 정보 전달
3.5. 예외 처리
- @ExceptionHandler: 예외 발생 시 처리
- @ResponseStatus: HTTP 상태 코드 설정
4. 스프링 부트에서 제공하는 추가 기능
- @PathVariable: URI 변수 사용
- @RequestParam: 요청 파라미터 사용
- @RequestHeader: 요청 헤더 사용
- @RequestBody: 요청 본문 사용
- ResponseEntity: HTTP 응답 커스터마이징
5. 결론
스프링 부트는 @RestController와 @RequestMapping 애노테이션을 통해 간결하고 효율적인 REST API 개발을 지원합니다. 본 글에서는 REST API의 기본 개념과 스프링 부트를 활용한 구현 방법을 상세하게 살펴보았습니다. 실제 개발에서는 다양한 상황에 맞춰 유연하게 적용하여 효과적인 REST API를 구축할 수 있습니다.
728x90
728x90
'SpringBoot 를 배워보자 > 3. 스프링 부트 기본 프로젝트 구조' 카테고리의 다른 글
스프링 부트 @Autowired를 이용한 의존성 주입 (0) | 2024.09.29 |
---|---|
스프링 부트 @SpringBootApplication 애노테이션 (0) | 2024.09.29 |
스프링 부트 프로젝트 디렉토리 구조 (0) | 2024.09.29 |