스프링 부트(Spring Boot)를 활용한 DELETE REST API 구현
스프링 부트(Spring Boot)를 활용하여 HTTP Method중 하나인 DELETE REST API를 구현하는 방법에 대해 알아보자.
@RestController는 해당 class가 RestAPI를 처리하는 Controller로 등록하겠다는 의미에서 사용된다.
<구현 방법>
① @DeleteMapping에 path 속성은 생략하고 세부 URL에 대한 path를 지정해준다.
이 때 요청을 보내는쪽에서 /path-variable 뒤에 보낸 데이터를 대해 받기 위해서는 {}안에 변수명을 지정해주고
이 변수명은 ②의 @PathVariable의 userId 속성에 값과 일치해야 한다.
② {}안에 변수명에 대해 @PathVariable의 userId 속성에 값과 일치해야 하며 변수명으로 들어온 값은
long userId에 담기게 된다.
③ 요청을 보내는쪽에서 ? 뒤의 쿼리 파라미터에 대한 데이터를 대해 받기 위해서 @RequestParam를 넣고 타입 뒤에 있는 변수명에는 API 요청 시 쿼리 파라미터에 작성한 key=value에서의 key와 일치해야 한다.
④ DELETE로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/delete-method/5?userName=bkjo를 셋팅한다.
⑤ Send 버튼을 클릭하여 GET REST API를 호출한다.
⑥ 정상적으로 delete가 됐기 때문에 Body 부분에 아무것도 담기지 않은 것이다.
⑦ 인텔리제이(Intellij)의 console창을 보면 정상적으로 userId, userName 값이 출력 된 것을 확인할 수 있다.
<잘못된 예시>
① @DeleteMapping에 path 속성은 생략하고 세부 URL에 대한 path를 지정해준다.
이 때 요청을 보내는쪽에서 /path-variable 뒤에 보낸 데이터를 대해 받기 위해서는 {}안에 변수명을 지정해주고
이 변수명은 ②의 @PathVariable의 userId 속성에 값과 일치해야 한다.
② {}안에 변수명에 대해 @PathVariable의 userId 속성에 값과 일치해야 하며 변수명으로 들어온 값은
long userId에 담기게 된다.
③ 요청을 보내는쪽에서 ? 뒤의 쿼리 파라미터에 대한 데이터를 대해 받기 위해서 @RequestParam를 넣고 타입 뒤에 있는 변수명에는 API 요청 시 쿼리 파라미터에 작성한 key=value에서의 key와 일치해야 한다.
④ DELETE로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/delete-method/5?name=bkjo를 셋팅한다.
⑤ Send 버튼을 클릭하여 GET REST API를 호출한다.
⑥ API 요청 시 보내는 쿼리 파라미터를 보면 name=bkjo로 보내고 있는데 받는 쪽에서는 @RequestParam String
userName으로 받고 있기 때문에 Bad Request에 해당하는 400code 에러가 발생했다.
name으로 보냈으면 받는 쪽도 name으로 동일하게 매핑이 되어야 한다.
⑦ 인텔리제이(Intellij)의 console창을 보면 다음과 같이 key가 userName인 parameter가 들어와야되는데 찾을 수 없다는
에러가 출력 된 것을 확인할 수 있다.