Шаблон объектов передачи данных (DTO) в Go - PullRequest
0 голосов
/ 08 декабря 2018

Примечание: в основном относится к разработке HTTP-API и веб-разработке в целом.

В C # и Java у нас есть шаблон DTO, с точки зрения непрофессионала, это просто класс, который иногда "специфичен для домена"также называется «просмотр модели» (отправляется по сети).Так, например, наш DTO для входа в систему будет выглядеть примерно так: LoginParams с именем пользователя и паролем (только).

Или, скажем, CreateUserRequest, который содержит свойства, необходимые только для этой конкретной операции (для создания пользователя мынапример, идентификатор не нужен) и отдельный DTO для ответа (CreateUserResponse или просто User).

Он также используется для скрытия определенных свойств от сериализации или потому, что модель API слишком сильно отличаетсяиз нашего домена или модели данных.

Итак, рассмотрим модель User со свойством, подобным hashed_password, очевидно, мы не хотим возвращать hashed_password клиенту нашего HTTP API, потому что об этом должен знать только сервер.Поэтому для этой цели у нас есть отдельный класс UserDto или UserResponseModel со свойствами, которые мы хотим отправить пользователю API.

Automapper и аналогичные библиотеки обычно используются для упрощения этого процесса путем сопоставления одного объекта сдругой для нас.

Я где-то читал, что этот шаблон в Golang отсутствует, и, как правило, неправильно применять шаблоны C # и Java к таким языкам, как Go (??).

Еслиэто правда, как вы отделяете свои модели данных и / или модели предметной области от своих моделей API?

...