본문 바로가기
Spring/Java

[ spring ] Spring 4.3 이후 추가된 RequestMapping 관련 상세 어노테이션(@GetMapping / @PostMapping / @PutMapping / @DeleteMapping / @PatchMapping )

by snow_hong 2022. 7. 7.

 

Spring 4.3 이후 추가된 RequestMapping 관련 상세 어노테이션 5개에 대해서 알아보자!

@GetMapping / @PostMapping / @PutMapping / @DeleteMapping / @PatchMapping 

 

 

1. @GetMapping : Get방식의 Http(s) 요청 처리를 위한 어노테이션

- Get 방식은 Header에 정보를 담아 보내므로 용량에 한계가 있어 정보를 호출할 때 주로 사용한다.

//RequestMapping 사용 시
@RequestMapping(value ="/getUserList", method = { RequestMethod.GET })
 
//위의 어노테이션을 GetMapping 사용 시 아래와 같이 간단하게 사용할 수 있다.
@GetMapping("/userList")

//파라미터가 있는 경우 다음과 같이 사용할 수 있다.
//@PathVariable을 사용하면 전달한 파라미터 값을 받아 사용할 수 있다.
@GetMapping("/userList/{id}")
public String getUserList(@PathVariable int id, Model model){
  model.addAttribute("userList", userService.get_user_search(id))
  return "user/userlist";
}
//또는 @RequestParam을 사용하면 아래와 같으며, value, required, defaultValue 3가지 설정이 있다.
//value : Parameter의 key값(미설정 시 변수의 이름을 key로 보냄)
//required : 필수 Parameter 여부(true:필수, false:선택). true값이 기본
//defaultValue : 기본값 (미설정 시 required 가 false일 경우 빈값)
@GetMapping("/getUserList")
public String getUserList(@RequestParam(value = "status", defaultValue = "0", required = false) int status){
  model.addAttribute("userList", userService.get_user_search(id))
  return "user/userlist";
}

 

2. @PostMapping : Post방식의 Http(s) 요청 처리를 위한 어노테이션

- Post방식은 HttpBody에 정보를 담아 보내므로 Get방식보다 안전하여 새로운 정보를 등록할 때 주로 사용한다.

//RequestMapping 사용 시
@RequestMapping(value ="/createUser", method = { RequestMethod.POST})
 
//위의 어노테이션을 PostMapping 사용 시 아래와 같이 간단하게 사용할 수 있다.
@PostMapping("/createUser")

 

3. @DeleteMapping : Delete를 위한 Http(s) 요청 처리 어노테이션

- 기존의 정보를 삭제할 때 주로 사용한다.

@DeleteMapping("userList/{id}") //id값으로 데이터를 삭제
  public ResponseEntity<?> delBoard(@PathVariable int id) {
ResponseEntity란?
1) @ResponseBody 어노테이션 대신 사용
2) 오버로딩된 메서드 ResponseEntity<List<리턴 타입>>(body, status) 사용
- body는 리턴 타입과 같은 타입이 들어가야 함
- status는 HttpStatus의 상태를 지정하는 것
HttpStatus.OK : 200정상
HttpStatus.NOT_FOUND : 404에러
HttpStatus.INTERNAL_SERVER_ERROR : 500에러

 

4. @PutMapping, PatchMapping : Put 을 위한 Http(s) 요청 처리 어노테이션

- 기존의 정보를 수정할 때 주로 사용한다.

// id로 userList 수정(id로 user 정보 찾아 전체 UserList 객체의 nick, tel 정보를 수정함)
@PutMapping("/{id}", produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<UserList> updateUser(@PathVariable("id") int id, @RequestBody UserList userList) {
  userService.updateById(nick, tel);
  return new ResponseEntity<UserList>(userList, HttpStatus.OK);
}

 

5. @PatchMapping : Patch를 위한 Http(s) 요청 처리를 위한 어노테이션

- 일부 정보를 수정하고자 할 때에는 Patch를 사용

- https://www.baeldung.com/http-put-patch-difference-spring 참고

@PatchMapping("/heavyresource/{id}")
public ResponseEntity<?> partialUpdateName(
  @RequestBody HeavyResourceAddressOnly partialUpdate, @PathVariable("id") String id) {
    
    heavyResourceRepository.save(partialUpdate, id);
    return ResponseEntity.ok("resource address updated");
}

 

 

728x90

댓글