@GetMapping, @PostMapping, @PutMapping, @DeleteMapping 은 각 어노테이션이 컨트롤러 내의 메서드에 적용되며, 주로 URL 경로와 HTTP 메서드를 결합해서 사용된다.
그래서 스프링 프레임워크에서 RESTful 서비스를 구축할 때 사용되는 주요 어노테이션이다.
HTTP 요청 유형(GET, POST, PUT, DELETE)에 따라 메서드를 매핑하는 데 사용된다.
<@GetMapping>
HTTP GET 요청을 특정 메서드에 매핑한다.
@RequestMapping 어노테이션의 특수한 형태로, 'method = RequestMethod.GET'을 기본값으로 가지고 있다.
주로 데이터를 읽거나 검색할 때 사용된다.
@RestController
public class UserController {
@GetMapping("/users")
public List<User> getAllUsers() {
// 사용자 목록을 반환하는 로직
}
}
<@PostMapping>
GET요청처럼 HTTP POST 요청에 대응한다.
클라이언트에서 서버로 데이터를 전송해서 새로운 리소스를 생성하거나, 서버에 데이터를 제출할 떄 주로 사용된다.
@RequestMapping 어노테이션의 특수한 형태로, 'method = RequestMethod.POST'를 기본값으로 가지고 있다.
@RestController
public class UserController {
@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User newUser) {
User savedUser = userService.save(newUser);
return ResponseEntity.status(HttpStatus.CREATED).body(savedUser);
}
}
@RequestBody 어노테이션을 사용하여 HTTP 요청의 데이터를 자바 객체로 변환할 수 있다.
스프링은 Jackson 등의 라이브러리를 사용하여 JSON 데이터를 자바 객체로 자동 변환한다.
위 예시에서, 클라이언트에서 보낸 JSON 데이터를 User 객체로 변환한다.
useService의 save 메소드를 사용하여 User를 저장한 후에는 ResponseEntity를 사용하여 상태 코드와 User객체(savedUser)를 응답으로 반환한다.
<@PutMapping>
HTTP PUT 요청에 대응한다.
주로 기존 리소스를 업데이트하거나, 존재하지 않는 경우에 새 리소스를 생성하는데 사용된다.
@RequestMapping 어노테이션의 특수한 형태로, 기본적으로 'method = RequestMethod.PUT'를 가지고 있다.
@RestController
public class UserController {
@PutMapping("/users/{id}")
public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User updatedUser) {
User user = userService.updateUser(id, updatedUser);
return ResponseEntity.ok(user);
}
}
@PathVariable을 사용하여 URL에서 변수를 추출할 수 있고, @RequestBody를 사용해서 HTTP 요청 본문에 있는 데이터를 자바 객체로 변환한다.
위 예시에서, @PathVariable을 사용하여 URL에서 사용자 ID를 추출한다.
@RequestBody를 통해 클라이언트에서 보낸 JSON 데이터를 USER 객체로 변환한다.
userService의 updateUser 메소드를 통해 사용자 정보를 업데이트한 후, 업데이트된 사용자 객체를 응답으로 반환한다.(ResponseEntity.ok(user))
<@DeleteMapping>
HTTP DELETE 요청을 처리한다.
리소스를 삭제하는 데 사용된다.
@RequestMapping 어노테이션의 특수한 형태로, 'method = RequestMethod.DELETE'를 기본값으로 가지고 있다.
@RestController
public class UserController {
@DeleteMapping("/users/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
return ResponseEntity.noContent().build();
}
}
@PathVariable을 사용하여 URL에서 사용자 ID를 추출한다.
해당 사용자를 삭제한 후, HTTP 204 No Content 상태 코드를 반환한다.(nocontent: 본문이 없음을 의미)
'JAVA > Spring' 카테고리의 다른 글
스프링 프레임워크의 정의와 역사, 디자인 철학 (0) | 2024.05.29 |
---|---|
스프링 프레임워크의 필터 알아보기 (0) | 2024.03.23 |
Spring 프레임워크의 @RequestMapping 활용 (0) | 2024.03.23 |
Spring MVC에서 @PathVariable의 사용법 (0) | 2024.03.23 |
DispatcherServlet의 역할과 설정 방법 (0) | 2024.03.22 |