@RequestMapping 어노테이션은 스프링 MVC에서 HTTP 요청을 특정 컨트롤러 클래스나 핸들러 메소드에 매핑하는 데 사용됩니다.
기본적인 사용 방법은 다음과 같습니다:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/users")
public class UserController {
@RequestMapping("/{id}")
public User getUser(@PathVariable Long id) {
// 사용자 조회 로직
}
@RequestMapping(method = RequestMethod.POST)
public User createUser(@RequestBody User user) {
// 사용자 생성 로직
}
}
@RequestMapping을 조합하여 사용할 수 있습니다.요청 URL을 지정합니다.
@RequestMapping("/hello")
public String hello() {
return "Hello, World!";
}
허용할 HTTP 메소드를 지정합니다.
@RequestMapping(value = "/users", method = RequestMethod.POST)
public User createUser(@RequestBody User user) {
// 사용자 생성 로직
}
특정 파라미터가 있거나 없는 경우에만 매핑합니다.
@RequestMapping(value = "/users", params = "type=admin")
public List<User> getAdminUsers() {
// 관리자 사용자 목록 조회 로직
}
특정 헤더가 있거나 없는 경우에만 매핑합니다.
@RequestMapping(value = "/data", headers = "content-type=application/json")
public Data getData() {
// JSON 데이터 반환 로직
}
요청이나 응답의 미디어 타입을 지정합니다.
@RequestMapping(value = "/users", consumes = "application/json", produces = "application/json")
public User updateUser(@RequestBody User user) {
// 사용자 업데이트 로직
}
@RequestMapping의 method 속성을 더 간편하게 사용할 수 있는 단축 어노테이션들이 있습니다:
@GetMapping@PostMapping@PutMapping@DeleteMapping@PatchMapping사용 예:
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
// 사용자 조회 로직
}
@PostMapping
public User createUser(@RequestBody User user) {
// 사용자 생성 로직
}
URL 경로의 일부를 변수로 사용할 수 있습니다:
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
// id를 이용한 사용자 조회 로직
}
@RequestParam을 사용하여 요청 파라미터를 처리할 수 있습니다:
@GetMapping("/users")
public List<User> searchUsers(@RequestParam(required = false) String name) {
// name 파라미터를 이용한 사용자 검색 로직
}
produces 속성을 사용하여 응답의 미디어 타입을 지정할 수 있습니다:
@GetMapping(value = "/users", produces = {"application/json", "application/xml"})
public List<User> getUsers() {
// 사용자 목록 반환 로직
}
@RequestMapping이 적용된 컨트롤러를 테스트할 때는 MockMvc를 사용할 수 있습니다:
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void testGetUser() throws Exception {
mockMvc.perform(get("/api/users/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));
}
}
@RequestMapping 어노테이션은 스프링 MVC에서 HTTP 요청을 처리하는 핵심 요소입니다. 이를 통해 개발자는 URL, HTTP 메소드, 요청 파라미터 등 다양한 조건에 따라 요청을 적절한 핸들러 메소드에 매핑할 수 있습니다. 올바르게 사용하면 명확하고 RESTful한 API를 쉽게 구현할 수 있으며, 스프링의 강력한 기능들과 결합하여 효율적인 웹 애플리케이션을 개발할 수 있습니다.
@Controller
@RestController
@PathVariable
@RequestParam
@RequestBody