FastAPI 로 테스트용 API 서버 만들고 Spring Boot, Feign 이용해서 Rest Client 구현해서 기능 테스트는 마친 상태.
업체에서 API 테스트 서버 드디어 오픈했다고 연락와서 실제 연동 테스트 시작했는데 시작하자마자 에러 발생.
13:47:06.924 [http-nio-8080-exec-3] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet](DirectJDKLog.java:175) - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.codec.DecodeException: Could not extract response: no suitable HttpMessageConverter found for response type [...] and content type [text/plain;charset=UTF-8]] with root cause ...
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:126)
at org.springframework.cloud.openfeign.support.SpringDecoder.decode(SpringDecoder.java:57)
at org.springframework.cloud.openfeign.support.ResponseEntityDecoder.decode(ResponseEntityDecoder.java:61) at feign.optionals.OptionalDecoder.decode(OptionalDecoder.java:36)
at feign.AsyncResponseHandler.decode(AsyncResponseHandler.java:115)
...
'no suitable HttpMessageConverter found for response type ...' 란 부분 보고 메시지 디코딩 별도 구현해야 하나 싶었는데 찾다보니 의외로 간단하게 처리되는 문제였음.
@FeignClient(name="ROS-API", url="${rest-api.host}")
public interface RosClient {
// 기존
@GetMapping("${rest-url.ros0101}")
Ros0101 getBlocks(@PathVariable("id") String id);
// 수정
@GetMapping(value = "${rest-url.ros0101}", produces = "application/json")
Ros0101 getBlocks(@PathVariable("id") String id);
...
}
기록하고 보니 진짜 별거 아니지만 그래도 기념으로 ㅎ
'Lang' 카테고리의 다른 글
[Java]r2dbc 첫 테스트 (0) | 2021.07.09 |
---|---|
[Java]spring-cloud-stream mqtt binder (0) | 2021.07.08 |
[Java]Pair, Pair.of() (0) | 2021.06.09 |
[Java]Spring Cloud 에서 Kafka 인증 기능 사용 (0) | 2021.06.02 |
Spring Cloud Stream - Annotation-based, Function based 혼용 (0) | 2021.05.18 |