Опубликовать объект с помощью restController

У меня небольшая проблема с правильным созданием метода добавления людей в команды. Причина в том, что моя проблема в том, что я не могу добавить два аргумента в requestbody (или PathVariable). Я хочу взять идентификатор человека и идентификатор команды и вернуть их подключенными. Я создаю отдельный класс, в котором я генерирую идентификатор, но у меня проблема с тем, чтобы правильно указать этот идентификатор из базы данных: Это мой метод в cotroller:

@PostMapping("/addPeopleToTeams/{teamId}/{personId}")
    @ResponseBody
    public String addPeopleToTeam(@RequestBody TeamsAndPersonsId teamsAndPersonsId){
        System.out.println(" " + teamsAndPersonsId.getPersonId());
        System.out.println(" " + teamsAndPersonsId.getTeamId());
        teamService.findTeamById(teamsAndPersonsId.getTeamId());
        personService.findById(teamsAndPersonsId.getPersonId());

        return teamsAndPersonsId.getTeamId() + " " + teamsAndPersonsId.getPersonId();
    }

Это мой метод поиска по идентификатору в сервисе:

public Optional<TeamDto> findTeamById(Long id) {
        Assert.notNull(id, "ID must exist ");
        return teamRepository
                .findById(id)
                .map(p -> modelMapper.map(p, TeamDto.class));
    }

Другой мой класс - Team - это entity, teamDto и TeamsAndPersonsId.

TeamsAndPersonsId класс:

public class TeamsAndPersonsId {

    private Long personId;
    private Long teamId;

    public TeamsAndPersonsId(Long personId, Long teamId) {
        this.personId = personId;
        this.teamId = teamId;
    }

    public TeamsAndPersonsId(){}

    public Long getPersonId() {
        return personId;
    }

    public void setPersonId(Long personId) {
        this.personId = personId;
    }

    public Long getTeamId() {
        return teamId;
    }

    public void setTeamId(Long teamId) {
        this.teamId = teamId;
    }

Как правильно написать этот контроллер, чтобы возвращать реальные id команды и людей? Как я добавляю в Surce: @PostMapping ("/ addPeopleToTeams / {teamId} / {personId}"

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Фактически вы можете использовать несколько переменных пути, использовать их для создания TeamsAndPersonsId, а затем сохранить остальную часть вашего текущего кода:

    @PostMapping("/addPeopleToTeams/{teamId}/{personId}")
    @ResponseBody
    public String addPeopleToTeam(@PathVariable Long teamId, @PathVariable Long personId){

        TeamsAndPersonsId teamsAndPersonsId = new TeamsAndPersonsId(teamId, personId);
        // etc...

Другие вопросы по теме