PUT
수정을 요청하는 PUT API 를 만들어 보자.
CarController.java 에 다음 코드를 추가하면 된다.
@PutMapping("/api/cars/{id}") //변경할 데이터 ID 까지
public void updateCar(@PathVariable Long id, @RequestBody CarRequestDto carRequestDto){
carService.update(id, carRequestDto);
}
이전의 @GetMapping, @PostMapping 과 URL 이 조금 다르다는 것을 알 수 있는데,
해당하는 ID 값을 가진 데이터를 찾아서 수정해야 하기 때문에 {id} 를 추가해줬다는 차이가 있다.
이는 PUT 방식으로 위 주소로 이동했을 때 작동하는 updateCar 메소드에서
@PathVariable 어노테이션을 통해 id 라는 변수로 사용 가능하게 된다.
이해를 돕기 위한 CarService.update(id, CarRequestDto)
더보기
@Transactional //SQL쿼리가 일어남을 스프링에게 알려줌
public void update(Long id, CarRequestDto carRequestDto){
Car car1 = carRepository.findById(id).orElseThrow(
() -> new IllegalArgumentException("해당 아이디가 존재하지 않음.")
);
car1.update(carRequestDto);
}
다시 서버를 실행해주고 저번 게시물처럼 POST 방식으로 GV80 차량을 생성요청 한 후,
PUT 방식으로 ID 가 1인 데이터를 G90 차량으로 변경 해 보았다.
잘 작동함을 알 수 있다. 718 박스터였던 1번 차량이 G90으로 바뀌었음을 알 수 있다.
Delete
다음 코드를 CarController.java 에 추가하면 된다.
@DeleteMapping("/api/cars/{id}")
public void deleteCar(@PathVariable Long id){
carRepository.deleteById(id);
}
PUT 수정 요청과 마찬가지로 해당하는 ID 를 가진 데이터를 삭제할 것이기 때문에 URL의 마지막에 ID 가 붙는다.
이번에는 다시 서버를 작동시킨 후에 GV80을 추가하고, 1번 ID 인 718 박스터를 G90 으로 바꿔주고,
마지막으로 직전 추가했던 1번 ID 의 G90 을 삭제해 보려고 한다.
지금까지 GET, POST, PUT, DELETE 각각에 대한 API 를 만들어 보았다.
'Spring > Spring 정리' 카테고리의 다른 글
트랜잭션과 @Transactional (2) | 2023.03.15 |
---|---|
Spring 과 Spring Boot 의 차이 (0) | 2022.10.09 |
REST / REST API / RESTful 간단히 정리 (0) | 2022.09.21 |
API - 2 (GET, POST) (0) | 2022.09.21 |
DTO (2) | 2022.09.19 |