이전 글이 길어져서 나머지 PUT, DELETE 방식에 대해 진행해 보겠다.

이번에는 DTO를 사용해서 매핑을 해주었다. 또한 반환되는 데이터 타입도 DTO로 설정해주었다.

요청은형식과 요청 주소를 변경해 주었다. 나머지는 동일하다.


요청 후 받은 데이터를 보면 JSON형식으로 받은것을 볼 수 있다. Headers에 응답으로 온 데이터의 Content-Type이 application/json으로 온것을 볼 수 있다.
컨트롤러에서 MemberDto를 반환 타입으로 설정했는데 왜 JSON 값이 응답으로 갔을까❓❓
- 컨트롤러에 설정한 @RestController 어노테이션 때문이다.
- @RestController 어노테이션이 지정된 클래스는 @ResponseBody를 생략할 수있다. 이 어노테이션은 자동으로 값을 JSON과 같은 형식으로 변환해서 전달하는 역할을 수행한다. 그래서 MemberDto를 JSON형식으로 자동 변환해 응답을 준것이다.
지금까지 Postman으로 요청을 주고 응답을 받은 것은 응답이 잘 전달되었을 때 응답코드를 200으로 주었다. ResponseEntity로 이 값을 바꿀 수 있다.
스프링 프레임워크에는 HttpEntity라는 클래스가 있는데 이 클래스는 Header와 Body로 구성된 HTTP요청과 응답을 구성하는 역할을 한다.
ResponseEntity는 HttpEntity를 상속받다 구현한 클래스이다. 이를통해 Header와 Body를 쉽게 구성할 수 있다.


위 사진처럼 응답 코드가 200에서 202로 바뀐것을 확인할 수 있다.

GET API와 동일하게 @PathVariable을 사용하거나 @RequestParam을 사용한다. GET과 방법은 동일하므로 나머지결과는 생략하도록 하겠다.
명세란 해당 API가 어떤 로직을 수행하는지 설명하고 이 로직을 수행하기 위해 어떤 값을 요청하며, 이에 따른 응답값으로 무엇을 받을 수 있는지를 정리한 자료이다.
build.gradle에 다음 의존성을 추가해준다.
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")
"localhost:8080/swagger-ui/indelx.html"으로 이동하면 다음과 같은 화면이 나온다.

spring-boot 2.x 버전에서는 springfox-swagger를 지원했지만 3.x 버전부터는 아직 지원하지 않아서 springdoc을 사요하였다.
이번에는 기본적인 API를 작성해 보는 시간을 가져보았다. @RestController를 왜 사용하는지 모르고 사용을 해왔는데 이번에 다시 공부하며 Controllerd와 ResponseBody가 합쳐진 형태라는 것을 알게 되었다.
지금까지 작성된 코드들이 이유도 모른채 사용되어 왔다는 것을 알게되서 앞으로는 작동원리나 사요된 이유들을 함께 공부하며 나가야할것 같다.