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
'Spring > Java' 카테고리의 다른 글
| [ Java ] 자바 환경변수 설정방법 (0) | 2022.08.31 |
|---|---|
| [ Java ] Ellipsis (...) 가변인수 사용법 및 예제 (0) | 2022.07.15 |
| [ spring ] @RequestMapping 대신 @PostMapping @GetMapping 쓰는 이유 및 차이점 (0) | 2022.07.07 |
| [ Java ] String to int, int to String 형변환 (문자열을 숫자로 / 숫자를 문자열로 변환) (0) | 2022.04.22 |
| [ Java ] 파일 사이즈 구하기 (Files, FileChannel, File) (0) | 2022.04.21 |
댓글