У меня клиент-серверное приложение, использующее Feign. Серверная часть (без бизнес-логики):
@RestController
@RequestMapping
public class ControllerAddress {
@PostMapping(value = "/address")
@ResponseBody
public ResponseEntity<Boolean> postAddress(@RequestBody String address) {
return ResponseEntity.ok(true);
}
}
Клиентская часть имеет интерфейс сервера следующим образом:
public interface ServiceInterfaceAddress {
@Path("/address")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
ResponseEntity<Boolean> setAddress(@RequestBody String address);
}
Затем я продолжаю создавать и вызывать службу Feign с помощьюспособ
public class CallerServiceInterfaceAddress {
public static ResponseEntity<Boolean> call(String url, String address) {
ServiceInterfaceAddress serviceInterfaceAddress = Feign.builder()
.contract(new JAXRSContract())
.encoder(new JacksonEncoder())
.decoder(new JacksonDecoder())
.target(ServiceInterfaceAddress.class, url);
return serviceInterfaceAddress.setAddress(address);
}
}
Когда я получаю ответ от сервера, я получаю com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of org.springframework.http.ResponseEntity: no boolean/Boolean-argument constructor/factory method to deserialize from boolean value (true)
.
Это работает, если я изменяю тип возврата обеих функций в моей клиентской части с ResponseEntity<Boolean>
до boolean
. Должен ли я сохранить его таким образом или можно исправить исходный код без особых хлопот и сохранить ResponseEntity<Boolean>
возвращаемых типов?