상세 컨텐츠

본문 제목

스프링 MVC를 이용한 API 개발: 주요 어노테이션

Spring(프레임워크)

by 헬로제이콥 2025. 1. 17. 11:08

본문

스프링 MVC를 이용한 API 개발: @RestController 어노테이션과 주요 어노테이션 설명

@RestController 어노테이션이란?

@RestController 어노테이션은 스프링 MVC에서 RESTful API를 개발할 때 컨트롤러 클래스에 붙여주는 어노테이션입니다. 이 어노테이션은 해당 클래스의 모든 메소드가 HTTP 요청에 대한 응답으로 데이터를 직접 반환하도록 설정합니다. 즉, 뷰를 찾아서 렌더링하는 대신, JSON, XML 등의 형태로 데이터를 클라이언트에게 전달합니다.

주요 어노테이션 설명

@RequestMapping

  • HTTP 요청 메서드와 URL을 매핑: 어떤 HTTP 요청(GET, POST, PUT, DELETE 등)에 어떤 URL로 들어왔을 때 해당 메소드를 실행할지 정의합니다.
  • 예시:
    Java
     
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        // id에 해당하는 사용자 정보 조회
    }
    
    위 예시는 GET 방식으로 "/users/{id}" URL에 접근하면 getUser 메소드가 호출되도록 설정합니다.

@RequestBody

  • HTTP 요청 본문에 담긴 데이터를 객체로 변환: 클라이언트에서 전송한 JSON, XML 등의 데이터를 Java 객체로 변환하여 메소드의 파라미터로 전달합니다.
  • 예시:
    Java
     
    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        // 새로운 사용자 정보 저장
    }
    
    위 예시는 POST 방식으로 "/users" URL에 JSON 형태의 사용자 정보를 전송하면, 해당 JSON 데이터를 User 객체로 변환하여 createUser 메소드의 파라미터로 전달합니다.

@PathVariable

  • URL 경로에서 변수 값 추출: URL에 포함된 변수 값을 메소드의 파라미터로 전달합니다.
  • 예시: 위의 @GetMapping 예시 참조

@RequestParam

  • HTTP 요청 파라미터 값 추출: URL 쿼리 파라미터 값을 메소드의 파라미터로 전달합니다.
  • 예시:
    Java
     
    @GetMapping("/search")
    public List<Product> searchProducts(@RequestParam String keyword) {
        // keyword를 이용하여 상품 검색
    }
    
    위 예시는 GET 방식으로 "/search?keyword=아이폰" URL에 접근하면, keyword 파라미터 값인 "아이폰"을 이용하여 상품을 검색합니다.

@ResponseStatus

  • HTTP 상태 코드 설정: 메소드 실행 결과에 따라 HTTP 상태 코드를 설정합니다.
  • 예시:
    Java
     
    @DeleteMapping("/users/{id}")
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void deleteUser(@PathVariable Long id) {
        // 사용자 삭제
    }
    
    위 예시는 사용자 삭제 시 HTTP 상태 코드 204 (No Content)를 반환합니다.

@ResponseBody

  • @RestController에서 자동으로 적용: 메소드의 반환 값을 HTTP 응답 본문에 직접 담아 전송합니다. @RestController를 사용하면 별도로 설정할 필요가 없습니다.

추가적으로 알아두면 좋은 어노테이션

  • @CrossOrigin: 다른 도메인에서 접근을 허용할 때 사용합니다.
  • @Validated: 데이터 검증을 위한 어노테이션입니다.
  • @PreAuthorize, @PostAuthorize: 메소드 실행 전후에 권한을 검증할 때 사용합니다.

예시: 간단한 사용자 관리 API

Java
 
@RestController
@RequestMapping("/api/users")
public class UserController {

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        // 사용자 정보 조회 로직
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        // 사용자 생성 로직
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        // 사용자 정보 수정 로직
    }

    @DeleteMapping("/{id}")
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void deleteUser(@PathVariable Long id) {
        // 사용자 삭제 로직
    }
}

위 예시는 사용자 정보를 조회, 생성, 수정, 삭제하는 간단한 REST API를 구현한 것입니다. 각 메소드에 해당하는 어노테이션을 통해 HTTP 요청 메서드, URL 매핑, 요청/응답 데이터 처리 등을 설정합니다.

핵심: @RestController는 RESTful API 개발을 위한 핵심 어노테이션이며, @RequestMapping, @RequestBody 등의 어노테이션을 조합하여 다양한 API를 구현할 수 있습니다.

관련글 더보기