Использование Dto против примитива, когда есть только один параметр

#spring #dto

Вопрос:

Если в запросе есть только один параметр (например, идентификатор участника, полученный для удаления), должен ли я привязать этот параметр к Dto или просто использовать его как примитив?

 @DeleteMapping("/members/{memberId}")
ResponseEntity<String> deleteAccount(@PathVariable int memberId){
    memberService.deleteAccount(memberId);
    return ResponseEntity.status(HttpStatus.OK).body("");
}
 

против

 @DeleteMapping("/members/{memberId}")
ResponseEntity<String> deleteAccount(MemberDeleteDto member){
    memberService.deleteAccount(member);
    return ResponseEntity.status(HttpStatus.OK).body("");
}
 

Комментарии:

1. Поскольку это переменная пути, вторая не будет работать, привязка выполняется либо для полей формы к объекту (атрибут модели), либо для привязки тела запроса (с помощью @RequestBody).

2. @M. Deinum Я проверил коды, и оба работают. Итак, должен ли я использовать MemberID в качестве примитива(int) на всем пути к классу репозитория?

3. По-видимому, поддержка параметров URI, которые соответствуют свойству объекта модели, действительно работает (нужно немного покопаться в коде 🙂 ). Так что используйте любое из них, личные предпочтения.

4. Большое спасибо! Хорошего вам дня 🙂

Ответ №1:

Я бы сказал, что для этого нет правила, но мое предложение состояло бы в том, чтобы упростить его и по возможности использовать примитивы для параметров пути. Если у вас действительно нет очень веской причины для использования полноценного объекта, я бы посоветовал вам не перепроектировать его.