【发布时间】:2020-04-02 13:35:43
【问题描述】:
在我们的 Spring Boot 应用程序中,我们调用了一个第三方的 rest API,它会以下面的格式返回响应数据:
找到数据后将得到以下响应:
{
"items": [
{
"eventType": "ABC",
"timestamp": "01-01-2020"
},
{
"eventType": "XYZ",
"timestamp": "02-02-2020"
}
]
}
当没有找到数据或为空时将得到以下响应:
{
"items": []
}
实际上,我们的rest api在成功时会返回正确格式的数据(找到数据)。但是当没有找到数据(空数据)时,我们的 rest 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);
}
请让我们知道我们是否在这里遗漏了什么或做错了什么。
提前致谢:)
【问题讨论】:
-
嗨,Jay,你能告诉我产品类吗? @Jay
-
我们的第三方应用程序正在向我们返回以下响应:
{ "items": [] }但是在我们收到它之后,我们将放入相应的对象并将响应返回给调用 api。以下是我们收到的错误回复:{} -
但是您必须正确设置 Product 类。你能展示一下吗?
-
@CodeWalter,请找到产品类: public class Product { private List
- items = new ArrayList
- (); public Product() { } public List
- getItems() { return items; } public void setItems(List
- items) { this.items = items; } }
- items = new ArrayList
标签: java spring spring-boot rest