Попытка передать DTO между двумя службами, но возникает исключение: нет подходящего HttpMessageConverter (хотя явно есть)
У меня есть две службы (приложения Spring Boot, работающие в IDE) - сервер и клиент. Оба имеют одинаковые классы DTO для клиентов. Конечная точка GET сервера указана ниже:
@GetMapping("/api/v1/customer/{customerId}")
public ResponseEntity<CustomerDto> getCustomer(@PathVariable UUID customerId) {
return new CustomerDto(UUID.random(), "TestName");
}
Я выполняю запрос к этой конечной точке со стороны клиента через restTemplate, ожидая своего DTO:
String apihost = "http://localhost:8080/api/v1/customer/";
String uuid = UUID.random().toString();
CustomerDto response = restTemplate.getForObject(apihost + uuid, CustomerDto.class);
Но столкнувшись с этой ошибкой (на самом деле исключение)
org.springframework.web.client.UnknownContentTypeException: Could not extract response:
no suitable HttpMessageConverter found for response type
[class com.keldranase.teafactoryclient.web.model.CustomerDto]
and content type [application/json]
Я запуталась, потому что конечно слежу, все работает нормально. Клиент явно получает ответ в виде JSON, потому что это:
Object response = restTemplate.getForEntity(hostapi + uuid, String.class);
System.out.println(response);
// Yields this::
// <200,{"id":"84101676-3363-4be3-a530-0f640b730c8e","name":"TestName"},
// [Content-Type:"application/json", Transfer-Encoding:"chunked",
// Date:"Thu, 01 Jul 2021 21:13:28 GMT", Keep-Alive:"timeout=60", Connection:"keep-alive"]>
Думаю, проблема где-то в конвертере. Я получил список конвертеров из моего RestTemplate и распечатал их:
org.springframework.http.converter.ByteArrayHttpMessageConverter@66908383
org.springframework.http.converter.StringHttpMessageConverter@27e32fe4
org.springframework.http.converter.StringHttpMessageConverter@41477a6d
org.springframework.http.converter.ResourceHttpMessageConverter@2bc12da
org.springframework.http.converter.xml.SourceHttpMessageConverter@3122b117
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@534ca02b
org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter@29a23c3d
Последний предназначен для преобразования JSON. Так что я не вижу, в чем проблема.