我有一个只有两个字段的Stock响应类,如下所示
class StockResponse {
private String orderId;
private String status;
//constructor
//getters and setters
}
并且控制器如下
@RestController
@RequestMapping("/stocks")
public class StockController {
private static List<StockResponse> stocktList = new ArrayList <StockResponse > ();
static {
stocktList.add(new StockResponse("order1", "AVAILABLE"));
stocktList.add(new StockResponse("order2", "AVAILABLE"));
stocktList.add(new StockResponse("order3", "NOT AVAILABLE"));
stocktList.add(new StockResponse("order4", "AVAILABLE"));
}
@GetMapping("/")
public ResponseEntity < ? > getProsucts() {
return ResponseEntity.ok(stocktList);
}
@GetMapping(path="/{id}", produces = "application/json;charset=UTF-8")
public StockResponse getProsucts(@PathVariable String id) {
StockResponse product = findOrder(id);
if (product == null) {
// return ResponseEntity.badRequest(product)
// .body("Invalid product Id");
}
System.out.println(product.getOrderId());
System.out.println(product.getStatus());
return new StockResponse(product.getOrderId(), product.getStatus());
}
private StockResponse findOrder(String id) {
return stocktList.stream()
.filter(user -> user.getOrderId()
.equals(id))
.findFirst()
.orElse(null);
}
}
当我调用localhost:8082/stocks/order 1时,我得到的响应只有一个字段,如下所示x1c 0d1x
我还能错过什么
2条答案
按热度按时间7vhp5slm1#
我无法重现这一点,这意味着它对我有效。
列出所有股票
获取特定股票
我的
StockController
和你的完全一样,我也复制粘贴了你的StockResponse
,得到了和你的完全一样的字段名,但是因为你没有包含构造函数/getter和setter,我将展示一个适合我的。示例化
stocktList
列表中的StockResponse
对象的方法是使用构造函数,这可能表明您实际上没有在对象上设置this.status
,如果这不起作用,请再次检查状态字段的getter是否实际上被称为getStatus()
。事实上,您的回答包含一个字段,该字段使用“非标准”大写字母作为第一个字母,这告诉我,您可能正在做一些其他不标准的事情,可能会影响您的结果。
bjp0bcyl2#
我确保了所有的getter和setter都是公共的,我仔细查看了一下,发现我在