Ответ, полученный от моего API Spring Boot Rest, не совпадает с бэкэнд-API, предоставленным моему API отдыха - PullRequest
1 голос
/ 02 апреля 2020

В нашем приложении Spring Boot мы вызываем сторонний API отдыха, который вернет нам данные ответа в следующем формате:

Ниже ответ будет получен при обнаружении данных:

  {
    "items": [
        {
            "eventType": "ABC",
            "timestamp": "01-01-2020"
        },
        {
            "eventType": "XYZ",
            "timestamp": "02-02-2020"
        }
    ]
}

Ниже будет получен ответ, когда данные не найдены или пустые:

  {
    "items": []
}

На самом деле, наш API оставшийся вернет данные правильного формата, если он будет успешным (данные найдены). Но когда данные не найдены (пустые данные), наши остальные API возвращают как этот "{}" вместо "{'items': []}" , который не правильно.

В контроллере мы вызываем методы класса обслуживания:

    @Autowired
    private ProductService productService;

    @GetMapping("/getProduct/{productNo}")
    public ResponseEntity<Product> getProduct(@PathVariable("productNo") String productNo) {
        logger.debug("--- getProduct() Method Called ---");
        return ResponseEntity.ok(productService.getProduct(productNo));
    }

В классе обслуживания мы вызываем внутренний URL-адрес, используя:

    @Autowired
    private RestTemplate restTemplate;

    @Override
    public Product getProduct(String productNo) {
        return restTemplate.getForObject("BACK_END_URL/" + productNo, Product.class);
    }

Пожалуйста, дайте нам знать, что мы что-то здесь упустили или сделали что-то не так.

Заранее спасибо:)

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Если вы хотите получить [], когда ваш items пуст, инициализируйте список items и измените установщик items в классе Product, как показано ниже:

import java.util.ArrayList;
import java.util.List;

public class Product {

    private List<Item> items = new ArrayList<>();

    public Product() {
    }

    public List<Item> getItems() {
        return items;
    }

    public void setItems(List<Item> items) {
        if (items != null) {
            this.items = items;
        }
    }
}

Результат:

{
    "items": []
}
0 голосов
/ 02 апреля 2020

Попробуйте с этим продуктом класса

public class Product {
     private List<Item> items;

     public Product() {
     }

     public Product(List<Item> items) {
       super();
       this.items = items;
    }



    public List<Item> getItems() {
       return items;
    }

    public void setItems(List<Item> items) {
       this.items = items;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...