Как передать список объектов в метод Rest API POST? - PullRequest
0 голосов
/ 05 июня 2019

Я создаю Spring REST API, который должен принимать 2 списка пользовательских объектов. Я не могу правильно передать тело POST API, который я создал. Есть идеи, что может пойти не так?

Ниже мой код:

Метод класса контроллера: // Класс главного контроллера, который вызывается из REST API. Пока только метод POST.

@RequestMapping(value = "/question1/solution/", method = RequestMethod.POST)
    public List<Plan> returnSolution(@RequestBody List<Plan> inputPlans, @RequestBody List<Feature> inputFeatures) {
        logger.info("Plans received from user are : " + inputPlans.toString());
        return planService.findBestPlan(inputPlans, inputFeatures);
    }

Plan Class, он будет содержать объекты класса Feature в массиве:

public class Plan {

    public Plan(String planName, double planCost, Feature[] features) {
        this.planName = planName;
        this.planCost = planCost;
        this.features = features;
    }

    public Plan() {

    }

    private String planName;
    private double planCost;
    Feature[] features;

    public String getPlanName() {
        return planName;
    }

// getters & setters
}

Характеристика класса POJO: // Функция будет содержать такие функции, как - электронная почта, архив и т. Д.

public class Feature implements Comparable<Feature> {
    public Feature(String featureName) {
        this.featureName = featureName;
    }

    public Feature() {

    }

    private String featureName;

    // Getters / Setters

    @Override
    public int compareTo(Feature inputFeature) {
        return this.featureName.compareTo(inputFeature.getFeatureName());
    }
}

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Вы должны создать JSON, как это:

{
"inputPlans":[],
"inputFeatures":[]
}

и создайте класс следующим образом:

public class SolutionRequestBody {
    private List<Plan> inputPlans;
    private List<Feature> inputFeatures;

    //setters and getters
}

Отображение POST так:

@RequestMapping(value = "/question1/solution/", method = RequestMethod.POST)
    public List<Plan> returnSolution(@RequestBody SolutionRequestBody solution) {
        logger.info("Plans received from user are : " + solution.getInputPlans().toString());
        return planService.findBestPlan(solution);
    }
0 голосов
/ 05 июня 2019

Вы не можете использовать @RequestBody дважды!

Вы должны создать класс, содержащий два списка, и использовать этот класс с @RequestBody

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...