spring mvc rest api

Spring MVC는 자바 기반의 웹 애플리케이션 개발을 위한 강력한 프레임워크입니다. 이 가이드에서는 Spring MVC를 사용하여 REST API를 개발하는 방법을 안내합니다.

1. 프로젝트 설정

먼저, Spring MVC REST API를 개발하기 위해 프로젝트를 설정해야 합니다. 프로젝트에서는 Maven 또는 Gradle과 같은 빌드 도구를 사용하여 필요한 의존성을 관리해야 합니다. 아래는 Maven을 사용하는 경우의 예시입니다.

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.9</version>
    </dependency>
</dependencies>

위의 의존성을 프로젝트의 pom.xml 파일에 추가하면 Spring MVC를 사용할 수 있습니다.

2. 컨트롤러 생성

Spring MVC에서는 @RestController 어노테이션을 사용하여 REST API를 처리하는 컨트롤러를 생성할 수 있습니다. 아래는 간단한 예시입니다.

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }

    @PostMapping("/user")
    public ResponseEntity createUser(@RequestBody User user) {
        // 사용자 생성 로직
        return ResponseEntity.ok().build();
    }
}

위의 예시에서 @RequestMapping 어노테이션을 통해 API 엔드포인트의 경로를 지정하고, @GetMapping 또는 @PostMapping 어노테이션을 통해 HTTP 메소드에 따른 API 핸들러를 작성할 수 있습니다.

3. 요청 및 응답 처리

Spring MVC는 요청과 응답을 쉽게 처리할 수 있는 다양한 기능을 제공합니다. HTTP 요청의 파라미터를 받아서 처리하거나, JSON 형태로 응답을 할 수 있습니다.

@GetMapping("/user/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    User user = userService.getUserById(id);
    if (user != null) {
        return ResponseEntity.ok(user);
    } else {
        return ResponseEntity.notFound().build();
    }
}

@PutMapping("/user/{id}")
public ResponseEntity updateUser(@PathVariable Long id, @RequestBody User user) {
    userService.updateUser(id, user);
    return ResponseEntity.ok().build();
}

위의 예시에서 @PathVariable 어노테이션을 사용하여 경로 변수를 받아올 수 있고, @RequestBody 어노테이션을 사용하여 요청의 바디를 객체로 바인딩할 수 있습니다.

4. 예외 처리

REST API에서는 예외 상황이 발생할 수 있습니다. Spring MVC는 @ControllerAdvice 어노테이션을 사용하여 예외를 처리할 공통 핸들러를 작성할 수 있습니다.

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity handleUserNotFoundException(UserNotFoundException ex) {
        return ResponseEntity.notFound().build();
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity handleException(Exception ex) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
    }
}

위의 예시에서 @ExceptionHandler 어노테이션을 사용하여 특정 예외에 대한 핸들러 메소드를 작성할 수 있습니다.

마무리

이 가이드에서는 Spring MVC를 사용하여 REST API를 개발하는 방법에 대해 안내했습니다. Spring MVC는 강력한 기능을 제공하므로 REST API 개발에 적합한 프레임워크입니다. 추가적인 기능이나 설정에 대해서는 Spring MVC 공식 문서를 참고하시기 바랍니다.

#spring #springmvc #restapi