Не могу изменить объект в Web API / Java Web App - PullRequest
0 голосов
/ 04 февраля 2019

Я создаю веб-приложение Java системы управления запасами с веб-клиентом REST.Эта система должна позволять пользователям добавлять товары, просматривать товары и уже изменять количество товаров в базе данных.До сих пор я успешно реализовал добавление элементов - используя запросы POST - и просмотр их - используя запросы GET.Тем не менее, я испытываю некоторые трудности с изменением количества каждого предмета.Вот код для класса Product:

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 {
    }
}

Метод getProduct() перебирает ArrayList, в котором хранятся все продуктычтобы получить конкретный продукт, который мне требуется, в то время как 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.

Мой вопрос заключается в том, что этот метод работает, только если я передаю один параметр: сумму или имя.Однако мне нужно и то, и другое изменить количество определенного элемента, и я не могу понять, как это сделать, имея возможность передавать только один параметр.Может ли кто-нибудь помочь мне здесь?Я пытался реализовать идентификатор для каждого продукта, который затем использовал бы, но я также не могу понять, как это сделать.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 05 февраля 2019

Почему бы вам не инкапсулировать вашу addStock-модификацию (-data) в отдельный объект передачи данных (DTO)?Таким образом, вы могли бы иметь:

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

Затем вы можете добавить это DTO к вашему REST-методу контроллера addStock как параметр тела (в Spring добавить @RequestBody аннотацию).Конечно, тогда REST-клиент должен PUT следовать JSON:

{
  productName: 'my product', 
  amountChange: -125
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...