[Spring] PUT Mapping Response

HOJUN·2024년 4월 21일

Backend - Spring

목록 보기
4/34

데이터 갱신과 생성에 해당하는 PUT 요청을 알아본다.

PUT 메소드는 POST 메소드와 매우 흡사하나,
데이터가 존재하면, 갱신하는 기능을 한다. CRUD의 C,U를 다룰 수 있는 메소드이다.

단, 실행될 때마다 데이터가 변경되기 때문에 안정성은 지켜지지 않으나, 중복 데이터를 생성하는 것이 아니므로 멱등성은 지켜진다. 예제는 매우 간단하다.

@RestController
@RequestMapping("/api")
public class PutApiController {
    @PutMapping("/put")
    public UserRequest put(
        @RequestBody
        UserRequest userRequest
    ){
        log.info("Request : {}", userRequest);
        return userRequest;
    }
}

POST 메소드와 비슷한 것이 아니라, 어노테이션만 다를 뿐이다. 매우 유사하다.

한 가지 다른 것을 다룬다면

@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserRequest {

    private String userName;

    private Integer userAge;

    private String email;

    private boolean isKorean;
}

isKorean 변수는 boolean 타입이고 디폴트는 false이다.

하지만 위와같이 구성한다면 요청은 디폴트로만 나온다.

왜일까 ?

바로 boolean타입의 getter 메소드 생성방식에 차이가 있다.

@Data 어노테이션을 통해 만들어진 함수들을 보면

getKorean이라는 함수가 있는데, 우리가 선언한 변수는 isKorean이므로 getIsKorean이라는 함수가 만들어질 것으로 예상할 수 있다.

하지만 primitive type인 boolean은 getter 메소드를 만들 때 getKorean이라는 이름으로 생성하므로, json 요청의 key를 바꾸거나 reference type인 Boolean으로 변수 타입을 변경하는 것이 옳다.

json은 바꾸지 말자. 사용자 혹은 본인까지 혼동될 수 있다.

0개의 댓글