@PutMapping

Yuno·2024년 8월 18일
0

Spring Framework 에서 HTTP PUT 요청을 처리하기 위해 사용되는 어노테이션.
주로 리소스를 업데이트할 때 사용되며, @RequestMapping(method = RequestMethod.PUT) 의 축약형


👉 기본 사용

@RestController
@RequestMapping("/api")
public class MyController {
	
    @PutMapping("/update/{id}")
    public ResponseEntity<String> updateResource(@PathVariable Long id, @RequestBody MyResource updatedResource) {
    	// id에 해당하는 리소스를 updatedResource로 업데이트
        // 업데이트 로직 구현
        return ResponseEntity.ok("Resource with ID " + id + " has been updated.");
    }
}
  • @RestController 는 이 클래스가 RESTful 웹 서비스의 컨트롤러임을 나타냄
  • @RequestMapping("/api") 는 클래스 수준의 URL 패턴을 설정함
  • @PutMapping("/update/{id}")/api/update/{id} 로 들어오는 PUT 요청을 처리
  • @PathVariable 은 URL 경로 변수인 id 를 메서드의 매개변수로 바인딩함
  • @RequestBody 는 요청 본문을 자바 객체로 변환함

👉 JSON 데이터 처리

클라이언트가 JSON 데이터를 통해 리소스를 업데이트하는 경우, @RequestBody 를 사용하여 JSON을 자바 객체로 변환함

@RestController
@RequestMapping("/api")
public class MyController {
	
    @PutMapping("/updateResource")
    public ResponseEntity<String> updateJsonResource(@RequestBody MyResource resource) {
    // JSON 데이터 처리 및 리소스 업데이트
    return ResponseEntity.ok("Resource updated: " + resource.getName());
    }
}
  • @RequestBody 는 JSON 데이터를 자바 객체로 변환하여 처리함

👉 경로 변수와 PUT 요청

리소스의 특정 ID를 기반으로 업데이트를 수행할 때, 경로 변수를 사용할 수 있음

@RestController
@RequestMapping("/api")
public class MyController {
	
    @PutMapping("/users/{userId}")
    public ResponseEntity<String> updateUser(@PathVariable Long userId, @RequestBody User updatedUser) {
    	// userId에 해당하는 사용자를 updatedUser 정보로 업데이트
        return ResponseEntity.ok("User with ID " + userId + " has been updated.")
    }
}
  • @PathVariable 은 경로의 일부인 userId 를 매핑하여 사용자의 ID를 가져옴

👉 전체 또는 부분 업데이트

PUT 요청은 보통 리소스의 전체 업데이트에 사용됨. 만약 부분 업데이트가 필요하다면, @PatchMapping 을 사용하는 것이 더 적절하지만, PUT을 사용할 수도 있음

@PutMapping("/users/{userId}")
public ResponseEntity<String> updateUserDetails(@PathVariable Long userId, @RequestBody Map<String, Object> updates) {
	// 부분 업데이트 로직 구현
    return ResponseEntity.ok("User with ID " + userId + " has been partially updated.");
}
  • @RequestBodyMap<String, Object> 를 사용하여 특정 필드만 업데이트할 수 있음.
profile
Hello World

0개의 댓글