API - 3 (PUT, DELETE)

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 차량으로 변경 해 보았다.

 

PUT

 

GET 결과

 

잘 작동함을 알 수 있다. 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 을 삭제해 보려고 한다.

 

G90 으로 수정, GV80 추가 후 GET 결과

 

DELETE

 

GET 결과

 

 

 

지금까지 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