我创建一个REST的Web客户端库存管理系统的Java Web应用程序。这个系统应该允许用户添加的产品,查看产品和修改项目的数量已经在数据库中。到目前为止,我已经成功地实施项目的加入 - 使用POST请求 - 并观看 - 使用GET请求。不过,我有一些困难,修改每个项目的数量。下面是产品类的代码:
public class product {
private int quantity;
private String name;
static AtomicInteger nextId = new AtomicInteger();
private int id;
public product(String name, int quantity) {
this.name = name;
this.quantity = quantity;
id = nextId.incrementAndGet();
}
Java方法修改产品的数量:
public void addStock(String item, int stockLevel) {
boolean found = checkExists(item)
product product = getProduct(item);
if(found == false) {
a.setQuantity(stockLevel);
}
else {
}
}
通过保存的所有产品的ArrayList中的getProduct()
方法重复。如果该产品在数据库中已存在检索具体的产品我需要,同时checkExists
检查。如果该项目不存在,我用的是setQuantity方法是:
public void setQuantity(int amount) {
this.quantity = quantity + amount;
}
我想要做的是,如果用户需要增加可用的项目数是发送PUT请求变更的项目数。所以我尝试这样做:
@PUT
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public void addStock(String name, int amount) {
itemService.addStock(name, amount);
}
然而,当我在Tomcat服务器上运行此它运行到多个错误。一些基本的错误检查后,我弄清楚它是因为该方法addStock多个参数。
我的问题是,这种方法只有当我通过在一个单一的参数,无论是量还是名的作品。然而,我既需要更改特定项目的数额,我无法弄清楚如何做到这一点,只有能够在一个单一的参数来传递。有人可以帮助我在这里?我试图实现每一个产品,然后,我会使用一个ID,但我无法弄清楚如何做到这一点无论是。任何帮助表示赞赏。
你为什么不encaplsulate您addStock改性( - 数据)到一个单独的数据传输对象(DTO)?所以,你可以有:
public class StockChange {
public String productName;
public int amountChange;
}
然后,你可以这样DTO添加到您的REST控制器方法addStock
的身体参数(在春季增加@RequestBody
注解)。当然,REST客户端应然后把下面的JSON:
{
productName: 'my product',
amountChange: -125
}