Feign Client로 요청을 보내는데, 디코딩을 할 수 없다는 예외가 발생했습니다.
import com.sdi.work_order.client.response.JigItemResponseDto;
import com.sdi.work_order.util.Response;
@FeignClient(name = "jigItemClient", url = "${api-base-url}")
public interface JigItemClient {
@GetMapping("/jig-item")
Response<JigItemResponseDto> findBySerialNo(@RequestParam(name = "serial-no") String serialNo);
}
FeignClient는 기본 생성자가 필요합니다.
JigItemResponseDto는 record 타입이라, 기본 생성자가 이미 있습니다.
public record JigItemResponseDto(
String model,
String serialNo,
List<JigCheckItem> checkList
) {}
혹시나 하는 마음에,
FeignClient 말고 RestTemplate을 직접적으로 써도 HttpMessageConversionException가 발생했습니다.
똑같이 기본 생성자가 없어서 발생하는 예외입니다.
org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.sdi.work_order.util.Response]
예외를 자세히 읽어보니 직접 만든 Response가 문제라는 것을 알게 되었습니다.
JigItemResponseDto는 기본 생성자가 있지만, Response에는 기본 생성자가 없습니다.
@Getter
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public class Response<T> {
...
}
기본 생성자를 추가해주니 잘 되었습니다.
@Getter
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Response<T> {
...
}
결론. 에러 코드를 잘 읽자;;;;;
닉값(삽질)만 하다가 하루를 날렸어요 ㅠ
'삽질' 카테고리의 다른 글
Java 버전 별 주요 Features (0) | 2024.07.23 |
---|---|
Mongosh로 몽고DB 접속 및 루트 사용자 생성 (0) | 2024.05.26 |
@EnableBatchProcessing 사용시 설정 Back Off (0) | 2024.05.04 |
UnsupportedProductError The client noticed that the server is not a supported distribution of Elasticsearch (2) | 2024.03.14 |
Pillin 프로젝트 백엔드 개발 리뷰 (0) | 2024.02.28 |