API BODY 로 작성한 Req 클래스에서 다음과 같은 에러가 발생했다.
cannot deserialize from Object value (no delegate- or property-based Creator)"
API를 다루는 코드를 여러번 만들었는데 이런 에러를 처음 발견했던 이유가 있었다.
기존 코드에서는 Req 클래스에서 생성자를 별도로 만든 코드가 없었기 때문이다.
{
"status": 400,
"reason_phrase": "Bad Request",
"messages": [
"JSON parse error: Cannot construct instance of `com.kt.cloud.commonwebdto.CopyParameterGroupReq` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)"
],
"method": "POST",
"path": "/v1.0/d1/paas/55811c9a5588491fa5f0b2e8c291ef65/dbaas/parameter-groups/0b6c06b6-65d4-4f68-9781-227603971a38/copy",
"timestamp": "2023-03-10 14:47:32"
}
Jackson Library가 빈 생성자가 없는 model을 생성하는 방법은 모른다고 한다.
-> 자세한 이유는 다른 Chapter 에서 다뤄보자.
즉, @NoArgsConstructor 어노테이션을 추가해주면 해결된다.
@Data
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) // REST 요청에 사용시, 필요
@NoArgsConstructor // default 생성자 추가
public class CopyParameterGroupReq {
String targetTenantId;
public CopyParameterGroupReq(String targetTenantId) {
this.targetTenantId = targetTenantId;
}
}