Как связать объект Feign Clients с специальным ключом ответа - PullRequest
0 голосов
/ 30 января 2019

Я создаю REST API для вызова другого API с помощью Feign Client в Spring Boot.Ответ JSON, который выдается, не совсем совпадает с моими моделями.Вот что я получил:

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "DC-01",
      "site": "10.168.3.11",
      "created_at": "2018-12-27T06:28:21.098134+00:00",
      "modified_at": "2019-01-14T03:48:57.109484+00:00"
    }
  ],
}

Моя модель такова:

public class Providers {
    private Integer id;
    private String name;
    private String site;
    private Date created_at;
    private Date modified_at;
}

Мой симметричный интерфейс клиента выглядит так:

@FeignClient(name = "CerberusClient", url = "${service.cerberus.url}")
public interface CerberusClient {

    @RequestMapping(value = "/providers/", method = RequestMethod.GET, produces = "application/json")
    List<Providers> getAllProviders();
}

Мой контроллер покоякак это:

@RestController
@RequestMapping("/cerberus/")
public class CerberusProvidersImpl {

    @Autowired
    private CerberusClient cerberusClient;

    @RequestMapping(value = "/getAllProviders", method = RequestMethod.GET, produces = "application/json")
    public List<Providers> getAllProviders() {
        return cerberusClient.getAllProviders();
    }
}

Но когда я вызываю Rest API моей программы, он дает такой результат:

status": 500,
"error": "Internal Server Error",
"message": "Error while extracting response for type[java.util.List<com.infrastructure.nemesis.feign.model.cerberus.Providers>] and content type [application/json]; 
nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON 
parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token; nested exception is 
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token\n at [Source: (PushbackInputStream); line: 1, column: 1]",

В моем FeignClient должно быть что-то, связывающее модель ипросто прочитайте значение «данных», чтобы оно соответствовало модели.Какой метод я должен использовать для этого случая?

...