Нужны ли @PathVariable или @RequestBody в сигнатуре внешней функции? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть один вопрос по поводу конвенции. Все работает хорошо (слава богу), но я не уверен, нужны ли аннотации (@PathVariable и @RequestBody) в моей сигнатуре метода класса AttributeService:

@Autowired
private AttributeRepository attributeRepository;

public Attribute create(@RequestBody Attribute attribute) {
    return attributeRepository.save(attribute);
}

Возможно, она будет работать с ними или без них , но имеют ли они какое-либо назначение вне моего контроллера @RestController? Метод контроллера выглядит следующим образом (здесь, конечно, мне нужны эти аннотации):

@PostMapping(consumes = "application/json")
public Attribute create(
        @RequestBody Attribute attribute
) {
    return attributeService.create(attribute);
}

Я имею в виду, это сбивает меня с толку, если я просматриваю свой класс обслуживания и вижу желтые аннотации, и я ошибаюсь, что я в классе Controller:)

Другой вопрос, это нормально, если они имеют одинаковое имя «создать»? Название метода контроллера на самом деле не имеет значения, потому что он вызывается автоматически, но я спрашиваю о соглашении. Мне легко сделать их с одинаковыми именами, поэтому я знаю, что быстрое совпадение, что create () из контроллера вызывает create () в сервисе (если у меня много таких методов).

Спасибо

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Нет смысла использовать @RequestBody в методах вашего AttributeService. Ни один фреймворк никогда не обработает эту аннотацию.

По моему мнению, прочитайте для GET, создайте для POST, обновите для PUT и удалите для DELETE, соответственно, хорошие имена методов для методов HTTP , Как вы сказали, любое имя будет работать.

1 голос
/ 17 апреля 2020

Да, эти аннотации необходимы для автоматической десериализации текста c в теле ответа или переменной пути к соответствующему объекту Java в контроллере. В вашем классе обслуживания вы работаете с объектом Java, поэтому эти аннотации здесь избыточны.

Что касается соглашения об именах, то это зависит от вас и ваших коллег:)

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