Spring - @RequestMapping

박민수·2023년 11월 14일

Spring

목록 보기
11/46
post-thumbnail

@RequestMapping

@RequestMapping은 클라이언트로부터 들어온 요청을 특정 메서드와 매핑하기 위한 어노테이션이다. 이 어노테이션을 사용하면 다양한 요청 매핑 설정을 통해 유연하게 요청을 처리할 수 있다.

사용 예시

  • value : 요청 받을 url을 설정한다.
  • method : 어떤 요청으로 받을지 설정한다. (GET, POST, PUT, DELETE 등)
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
    return "hello"; // "hello" 뷰를 반환
}

추가 옵션 및 속성

  • params: 특정 요청 파라미터를 조건으로 매핑할 수 있다.
@RequestMapping(value = "/filter", params = "type=1")
public String filterByType() {
    return "filteredType1";
}
  • headers: 특정 요청 헤더를 조건으로 매핑할 수 있다.
@RequestMapping(value = "/header", headers = "content-type=text/*")
public String handleTextHeader() {
    return "textHeader";
}
  • consumes: 소비할 미디어 타입을 설정할 수 있다. (예: JSON 데이터만 소비)
@RequestMapping(value = "/consume", consumes = "application/json")
public String consumeJson(@RequestBody MyObject myObject) {
    return "jsonConsumed";
}
  • produces: 생산할 미디어 타입을 설정할 수 있다. (예: JSON 데이터만 반환)
@RequestMapping(value = "/produce", produces = "application/json")
@ResponseBody
public MyObject produceJson() {
    return new MyObject();
}
  • path variables: URL 경로의 일부를 변수로 사용하여 매핑할 수 있다.
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String getUserById(@PathVariable("id") String userId) {
    return "User ID: " + userId;
}

축약 어노테이션

스프링 4.3 이후, @RequestMapping의 축약형 어노테이션을 사용할 수 있다. 이 어노테이션들은 특정 HTTP 메서드에 대한 매핑을 더 간단하게 표현할 수 있게 한다.

  • @GetMapping: GET 요청 매핑
@GetMapping("/hello")
public String hello() {
    return "hello";
}
  • @PostMapping: POST 요청 매핑
@PostMapping("/submit")
public String submit(@RequestBody MyObject myObject) {
    return "submitted";
}
  • @PutMapping: PUT 요청 매핑
@PutMapping("/update")
public String update(@RequestBody MyObject myObject) {
    return "updated";
}
  • @DeleteMapping: DELETE 요청 매핑
@DeleteMapping("/delete/{id}")
public String delete(@PathVariable("id") String id) {
    return "deleted " + id;
}
  • @PatchMapping: PATCH 요청 매핑
@PatchMapping("/patch")
public String patch(@RequestBody MyObject myObject) {
    return "patched";
}
profile
안녕하세요 백엔드 개발자입니다.

0개의 댓글