Spring Framework는 다양한 방식으로 HTTP 요청을 처리할 수 있는데, 그 중에서도 가장 많이 사용되는 방식 중 하나가 RequestMapping 입니다. 

RequestMapping은 컨트롤러의 메서드와 HTTP 요청을 매핑시켜주는 애노테이션으로, 이를 통해 Spring은 HTTP 요청을 컨트롤러 메서드와 매핑시켜 해당 메서드를 실행하게 됩니다.

RequestMapping은 다양한 방식으로 사용될 수 있는데, 다음과 같은 방식으로 사용할 수 있습니다.


1. URL 경로 매핑


RequestMapping은 URL 경로와 매핑되는 기능을 수행합니다. URL 경로 매핑은 다음과 같이 사용할 수 있습니다.

단순 경로 : 

@RequestMapping("/hello")와 같이 요청 URL 경로를 직접 지정할 수 있습니다. 

예를 들어, "/hello" 경로에 대한 요청이 들어오면 해당 메서드가 실행됩니다.

경로 변수 : 

@RequestMapping("/users/{id}")와 같이 중괄호({}) 안에 변수 이름을 지정할 수 있습니다. 

예를 들어, "/users/123" 경로에 대한 요청이 들어오면, id 변수에 "123" 값이 할당되어 해당 메서드가 실행됩니다. 경로 변수는 여러 개 사용할 수 있으며, @PathVariable 애노테이션을 사용해 변수를 매핑할 수 있습니다.

Ant 스타일 패턴 : 

@RequestMapping("/users/")와 같이 와일드카드(*)와 더블 와일드카드()를 사용해 패턴을 지정할 수 있습니다. 예를 들어, "/users/123/orders" 경로에 대한 요청이 들어오면 해당 메서드가 실행됩니다.


2. HTTP Method 매핑


RequestMapping은 HTTP 요청 메서드와도 매핑됩니다. HTTP Method 매핑은 다음과 같이 사용할 수 있습니다.

GET 요청: @RequestMapping(value = "/users", method = RequestMethod.GET)와 같이 value와 method 속성을 사용해 GET 요청에 대한 매핑을 지정할 수 있습니다. @GetMapping("/users")와 같이 간편하게 사용할 수도 있습니다.

POST 요청: @RequestMapping(value = "/users", method = RequestMethod.POST)와 같이 value와 method 속성을 사용해 POST 요청에 대한 매핑을 지정할 수 있습니다. @PostMapping("/users")와 같이 간편하게 사용할 수도 있습니다.

PUT 요청: @RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)와 같이 value와 method 속성을 사용해 PUT 요청에 대한 매핑을 지정할 수 있습니다. @PutMapping("/users/{id}")와 같이 간편하게 사용할 수도 있습니다.

DELETE 요청: @RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)와 같이 value와 method 속성을 사용해 DELETE 요청에 대한 매핑을 지정할 수 있습니다. @DeleteMapping("/users/{id}")와 같이 간편하게 사용할 수도 있습니다.


3. 파라미터 매핑

RequestMapping은 요청 파라미터에도 매핑됩니다. 요청 파라미터에 대한 매핑은 @RequestParam 애노테이션을 사용해 지정할 수 있습니다. 예를 들어, @RequestMapping("/user") 애노테이션과 함께 @RequestParam("userId") String userId 라는 파라미터가 있다면, "/user?userId=1234"와 같은 요청에 대해 해당 메서드가 실행되어 userId 파라미터에 "1234" 값을 전달받게 됩니다.

 

Spring MVC에서는 @RequestParam, @PathVariable, @RequestBody 등의 애노테이션을 사용하여 파라미터 매핑을 수행합니다.

@RequestParam
- @RequestParam 애노테이션은 HTTP 요청 파라미터를 메서드 파라미터와 매핑합니다. 이 애노테이션은 다음과 같이 사용할 수 있습니다.
- @RequestParam("파라미터 이름") 타입 변수명: HTTP 요청 파라미터 이름과 메서드 파라미터 이름을 지정합니다.

- @RequestParam(value="파라미터 이름", required=false, defaultValue="기본값") 타입 변수명: value 속성으로 HTTP 요청 파라미터 이름을, required 속성으로 필수 여부를, defaultValue 속성으로 기본값을 지정할 수 있습니다.

@PathVariable
- @PathVariable 애노테이션은 URI 경로 변수를 메서드 파라미터와 매핑합니다. 이 애노테이션은 다음과 같이 사용할 수 있습니다.
- @PathVariable("변수 이름") 타입 변수명: URI 경로 변수 이름과 메서드 파라미터 이름을 지정합니다.

 

@RequestBody
- @RequestBody 애노테이션은 HTTP 요청 본문을 메서드 파라미터와 매핑합니다. 이 애노테이션은 다음과 같이 사용할 수 있습니다.
- @RequestBody 타입 변수명: HTTP 요청 본문의 내용을 메서드 파라미터 타입으로 변환하여 매핑합니다.

 

@RequestHeader
- @RequestHeader 애노테이션은 HTTP 요청 헤더를 메서드 파라미터와 매핑합니다. 이 애노테이션은 다음과 같이 사용할 수 있습니다.
- @RequestHeader("헤더 이름") 타입 변수명: HTTP 요청 헤더 이름과 메서드 파라미터 이름을 지정합니다.
- @RequestHeader(value="헤더 이름", required=false, defaultValue="기본값") 타입 변수명: value 속성으로 HTTP 요청 헤더 이름을, required 속성으로 필수 여부를, defaultValue 속성으로 기본값을 지정할 수 있습니다.


이러한 파라미터 매핑 애노테이션을 사용하면 HTTP 요청 파라미터, 경로 변수, 요청 본문 등을 메서드 파라미터와 쉽게 매핑할 수 있습니다. 이를 통해 컨트롤러 메서드에서 HTTP 요청을 처리할 때 매우 편리하게 사용할 수 있습니다.

 

 

출처 : 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

+ Recent posts