[스프링] HTTP 요청 메서드 처리 방법

웹 애플리케이션을 개발하다 보면 클라이언트에서 서버로 요청을 보낼 때 사용하는 HTTP 요청 메서드를 처리해야 하는 경우가 많습니다. 스프링 프레임워크에서는 이러한 HTTP 요청 메서드를 처리하는 여러 가지 방법을 제공합니다. 이번 포스트에서는 스프링을 사용하여 HTTP GET, POST, PUT, DELETE 요청을 처리하는 방법에 대해 알아보겠습니다.

1. @RequestMapping 애노테이션을 이용한 처리

@RequestMapping 애노테이션은 요청 URL에 대한 매핑을 지정하고, 요청 메서드에 대한 처리를 지정할 때 사용됩니다.

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

    @GetMapping("/resource")
    public ResponseEntity<String> getResource() {
        // GET 요청 처리 로직
    }

    @PostMapping("/resource")
    public ResponseEntity<String> createResource(@RequestBody String requestBody) {
        // POST 요청 처리 로직
    }

    @PutMapping("/resource")
    public ResponseEntity<String> updateResource(@RequestBody String requestBody) {
        // PUT 요청 처리 로직
    }

    @DeleteMapping("/resource")
    public ResponseEntity<String> deleteResource() {
        // DELETE 요청 처리 로직
    }
}

위 예제에서 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping 애노테이션을 사용하여 각각의 HTTP 요청 메서드에 대한 처리를 지정하였습니다.

2. @RestController와 @RequestBody를 이용한 처리

@RestController@RequestBody 애노테이션을 이용하여 HTTP 요청 메서드를 처리할 수도 있습니다.

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

    @GetMapping("/resource")
    public ResponseEntity<String> getResource() {
        // GET 요청 처리 로직
    }

    @PostMapping("/resource")
    public ResponseEntity<String> createResource(@RequestBody String requestBody) {
        // POST 요청 처리 로직
    }

    @PutMapping("/resource")
    public ResponseEntity<String> updateResource(@RequestBody String requestBody) {
        // PUT 요청 처리 로직
    }

    @DeleteMapping("/resource")
    public ResponseEntity<String> deleteResource() {
        // DELETE 요청 처리 로직
    }
}

위 예제에서 @RequestBody 애노테이션을 사용하여 POST 및 PUT 요청의 바디를 파싱하여 해당 데이터를 처리할 수 있습니다.

3. HandlerMapping을 이용한 처리

스프링 MVC에서는 HandlerMapping을 직접 이용하여 URL과 컨트롤러를 매핑하는 방법도 제공합니다.

public class CustomHandlerMapping extends AbstractUrlHandlerMapping {

    @Override
    protected Object lookupHandler(String urlPath, HttpServletRequest request) throws Exception {
        // URL과 메서드에 따른 처리 로직
    }
}

위와 같이 커스텀한 HandlerMapping을 구현하여 HTTP 요청 메서드에 따른 처리 로직을 지정할 수 있습니다.

요약

이번 포스트에서는 스프링 프레임워크를 사용하여 HTTP 요청 메서드를 처리하는 방법에 대해 알아보았습니다. @RequestMapping 애노테이션을 이용한 방법, @RestController@RequestBody 애노테이션을 이용한 방법, 그리고 HandlerMapping을 이용한 방법에 대해 알아보았습니다. 이러한 다양한 방법을 통해 적절한 방식으로 HTTP 요청 메서드를 처리할 수 있습니다.

더 많은 정보를 원하시면 공식 스프링 문서를 참고하세요.