Burninghering's Blog
article thumbnail
Published 2022. 4. 18. 21:54
Spring Boot REST API_PUT Method Spring

  • 멱등성 : 몇번의 요청을 해도 같은 대답이 돌아오는가?
  • DataBody : DataBody에 data를 실어서 보내기 때문에 굳이 QueryParameter로 데이터를 보낼 필요는 없다.
  • 생성된 것을 조회하기 때문에 굳이 QueryParameter를 사용하지 않는다.

리소스가 없으면 생성을 하고, 있으면 삭제한다.

그렇기 때문에 멱등한다.

그 이유는 처음 한번은 데이터가 생성되고 계속 업데이트되기 때문에 데이터는 하나이며 계속 같은 상태 유지하기 때문

 

안정성은 없다. 잘못된 데이터를 보내더라도 생성하기 때문에

 

POST와 마찬가지로 Query Parameter는 가지지 않는 것이 안정적이다.

마찬가지로 데이터바디를 가지고 있어서 리스트의 범위 조정, 정렬 방법을 보낼 일이 없기 때문이다.


객체를 활용해서 값을 받기 위해 DTO를 만들자

 

PostRequestDto.java
CarDto.java

 

 

요청을 보냈더니

carList는 도착을 안했다!

 

그 이유는 우리가 PUT 요청을 보낼 때,

car_list로 스네이크 케이스로 보냈기 때문....

 

다른 케이스로도 받을 수 있는 방법이 있다.


클래스에 전체적으로 같은 룰을 적용시키기

 

@JsonProperty는 한 가지의 변수에 대해서만 이름을 지어주는 어노테이션이었지만,

 

아래처럼 어노테이션 @JsonNaming을 해주면

해당 클래스는 오브젝트맵퍼가 동작할 때 스네이크케이스로 인식한다는 것을 알 수 있다.


다시 요청을 해보았더니

하-아 이제는 carNumber가 말썽

왜긴 왜야 카멜케이스로 선언했는데 스네이크케이스로 요청해서 그렇지

JsonProperty로 스네이크케이스 받아주기!

 

뿌듯


put에 대한 요청을 받았으니 response는 어떻게 내려줄까?

 

Response 보내기

@RestController인 경우에는 오브젝트 자체를 보내주면 된다.

그러면 오브젝트 맵퍼가 오브젝트를 Json으로 바꿔준다.

 

 

결론

스프링 부트 RestController에서는, 

Object로 리턴을 시키고, 

Object에 대해 JsonProperty나 JsonNaming PropertyNamingStrategy 설정을 해두면

그것에 대한 룰에 따라 Json으로 바뀌어 내려간다. 

 

인자로 받을 것이 아니라, Object로 받아서

변수로 받을 인자들을 설정해주고, 룰을 설정해서 Json의 데이터로 바꿔서 Response가 내려가도록 개발할 수 있다.

 

그러므로 우선적으로

클래스의 이름 설정,

어떠한 변수로 받을 것인지,

어떠한 값으로 내려줄 것인지

 

클래스를 디자인하는 것이 매우 중요하다.

 


PathVariable 실습하기

{ } 안에 받을 아이디가 동일하다면

 

{ } 안에 받을 아이디가 동일하지 못하다면

 

아래 주소로 요청

http://localhost:8080/api/put/100

'Spring' 카테고리의 다른 글

Response 내려주는 방법  (0) 2022.04.19
Spring Boot REST API_DELETE Method  (0) 2022.04.19
Spring Boot REST API_POST Method  (0) 2022.04.12
Spring Boot REST API_Get Method  (0) 2022.03.22
WEB 개발 개론  (0) 2022.03.09
profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.