@RequestMapping은 클라이언트로부터 들어온 요청을 특정 메서드와 매핑하기 위한 어노테이션이다. 이 어노테이션을 사용하면 다양한 요청 매핑 설정을 통해 유연하게 요청을 처리할 수 있다.
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "hello"; // "hello" 뷰를 반환
}
@RequestMapping(value = "/filter", params = "type=1")
public String filterByType() {
return "filteredType1";
}
@RequestMapping(value = "/header", headers = "content-type=text/*")
public String handleTextHeader() {
return "textHeader";
}
@RequestMapping(value = "/consume", consumes = "application/json")
public String consumeJson(@RequestBody MyObject myObject) {
return "jsonConsumed";
}
@RequestMapping(value = "/produce", produces = "application/json")
@ResponseBody
public MyObject produceJson() {
return new MyObject();
}
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String getUserById(@PathVariable("id") String userId) {
return "User ID: " + userId;
}
스프링 4.3 이후, @RequestMapping의 축약형 어노테이션을 사용할 수 있다. 이 어노테이션들은 특정 HTTP 메서드에 대한 매핑을 더 간단하게 표현할 수 있게 한다.
@GetMapping("/hello")
public String hello() {
return "hello";
}
@PostMapping("/submit")
public String submit(@RequestBody MyObject myObject) {
return "submitted";
}
@PutMapping("/update")
public String update(@RequestBody MyObject myObject) {
return "updated";
}
@DeleteMapping("/delete/{id}")
public String delete(@PathVariable("id") String id) {
return "deleted " + id;
}
@PatchMapping("/patch")
public String patch(@RequestBody MyObject myObject) {
return "patched";
}