Создать пост метода restController для сервисного метода с двумя объектами - PullRequest
0 голосов
/ 07 июня 2018

У меня есть метод в службе, где я добавляю человека в команду:

@Transactional
    public void addPersonsToTeams(Long teamId, Long personId) {
        Assert.notNull(personId, "Object can't be null!");
        Assert.notNull(teamId, "Object can't be null!");
        try {
            Person person = personRepository.getOne(personId);
            Team team = teamRepository.getOne(teamId);
            person.getTeams().add(team);
            personRepository.save(person);
        } catch (Exception e) {
            throw new CreateEntityException();
        }

    }

Теперь в моем классе контроллера остальных я хочу создать метод post, чтобы проверить его в почтальоне.Но это мой первый метод с двумя аргументами, и я не знаю, как его создать.На самом деле у меня есть только это:

@PostMapping("/addPeopleToTeams")
    public ResponseEntity<?> addPeopleToTeam(@RequestBody Long teamId, Long personId){

    }

Это хороший способ?Может быть, у кого-нибудь есть пример?

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Возможно поставить teamId как @PathVariable.Таким образом, вы будете звонить /addPeopleToTeams/{teamId} с personId в @RequestBody.Или вы также можете отправить json, сформированный следующим образом:

{ 
   "personId" : "xx",
   "teamId" : "xx"
}

Затем вы можете назвать его так, как вы делаете это с /addPeopleToTeams с этим объектом в @RequestBody.Вы можете в значительной степени сделать это разными способами.Просто сделайте это так, как это имеет смысл в остальной части вашего кода.

0 голосов
/ 07 июня 2018
@RequestMapping(value = { "/addPeopleToTeams/{teamId}/{personId}" }, method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
@ResponseBody
public Boolean addPeopleToTeam( @PathVariable("teamId") Long teamId, @PathVariable("personId")  Long personId)

Но вам нужно вызывать ваш метод вот так /addPeopleToTeams/1/2

0 голосов
/ 07 июня 2018

Вы можете получить все тело сообщения в POJO.Ниже приведено нечто подобное

@RequestMapping(value = { "/api/pojo/edit" }, method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
@ResponseBody
public Boolean addPeopleToTeam( @RequestBody Pojo pojo) { return false; }

Где каждое поле в Pojo (включая геттер / установщики) должно соответствовать объекту запроса Json, который получает контроллер.

Ссылка

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