在网络API / Java的Web应用程序不能修改对象

问题描述 投票:0回答:1

我创建一个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,但我无法弄清楚如何做到这一点无论是。任何帮助表示赞赏。

java rest maven tomcat url
1个回答
0
投票

你为什么不encaplsulate您addStock改性( - 数据)到一个单独的数据传输对象(DTO)?所以,你可以有:

public class StockChange {
  public String productName;
  public int amountChange;
}

然后,你可以这样DTO添加到您的REST控制器方法addStock的身体参数(在春季增加@RequestBody注解)。当然,REST客户端应然后把下面的JSON:

{
  productName: 'my product', 
  amountChange: -125
}
© www.soinside.com 2019 - 2024. All rights reserved.