Включать ли Id в Data Transfer Object (DTO)?

Коллеги, я разрабатываю сервис в котором будут операции создания и обновления объектов.

  • Для создания объекта, клиент не передает Id сущности, т.к. он назначается в БД.
  • Для обновления же объекта, клиент передает Id.

Для цели взаимодействия с клиентом разрабатываю DTO.

Какая хорошая практика в этом случае?

  1. Сделать DTO без Id. Получать Id от клиента отдельным параметром в операции обновления.
  2. Сделать DTO с Id. В операции создания контролировать, что клиент не передал Id в json?
  3. Сделать два DTO: для создания и для обновления.

Мне больше близок вариант 2, т.к. Id все таки это часть сущности, и выдавать ошибку при наличии лишнего поля, это просто проверка на соответствие спецификации.


Ответы (1 шт):

Автор решения: Vladimir

Передавать id в DTO стандартная практика, в обычных случаях он часто пригождается, при обновлении объекта, удобно сразу конвертировать дто в объект, соответственно там будет идшник и можно будет сразу обновить существующей объект

→ Ссылка