Симулируйте ответ клиента, не преобразуясь в объекты

#java #json #spring #jackson #spring-cloud-feign

Вопрос:

Я вызываю службу и пытаюсь сохранить ответ в списке объектов.

 @FeignClient(name = "service")
public interface ServiceClient {
  @RequestMapping(method = RequestMethod.POST, value = "/url",
      produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  @ApiOperation(value = "process")
  List<MyClass> select(@RequestBody String query);
}
 

Ответ, возвращенный притворным клиентом, выглядит следующим образом

 [
    {
        "segmentId": "Source_2021-09-01_2021-10-01",
        "columns": [
            "merchantRefNum",
            "customerId",
            "firstName",
        ],
        "events": [
            {
                "merchantRefNum": "67456456",
                "customerId": rfgvkhbj,
                "firstName": "peter",
            },
            {
                "merchantRefNum": "654584856",
                "customerId": null,
                "firstName": "peter"
            }
        ]
    }
]
 

Мой соответствующий класс-это

 class MyClass {
        private String segmentId;
        private List<String> columns;
        private List<Map<String, String>> events;
    }
 

Я могу конвертировать с помощью object mapper для проверки моего класса и json следующим образом

 List<MyClass> responses = new ObjectMapper().readValue(jsonString,
    new TypeReference<List<MyClass>>(){});

 

Но когда я звоню притворному клиенту и пытаюсь сохранить ответ, он выдает мне ошибку

 List<MyClass> responses = Service.select(query);
 
 feign.FeignException$BadRequest: status 400 reading Service#select(String)
    at feign.FeignException.errorStatus(FeignException.java:92)
    at feign.FeignException.errorStatus(FeignException.java:86)
    at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:93)
    at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:149)
    at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78)
    at f.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
 

Не могли бы вы, ребята, пожалуйста, помочь мне?

Комментарии:

1. Эта ошибка не является проблемой преобразования для вашего клиента. Вы вызываете API в службе, но она отвечает неправильным запросом HTTP 400. Вам нужно исправить свои параметры, чтобы они соответствовали требованиям API (возможно, вам не хватает параметров).