注意:通常主要指HTTP API的开发和Web开发。
在C#和Java中,以通俗易懂的术语讲,我们拥有DTO模式,它只是“特定于域”的类,有时也称为“视图模型”(通过网络发送)。因此,例如,我们用于登录的DTO类似于LoginParams
,带有用户名和密码(仅)。
或者说CreateUserRequest
包含仅用于特定操作的属性(例如,创建用户我们不需要ID),以及用于响应的单独DTO(CreateUserResponse
或仅User
。
它还用于隐藏某些属性,使其不被序列化,或者因为API模型与我们的域或数据模型相差太大。
因此,考虑一个具有User
之类属性的模型hashed_password
,显然,我们不想将hashed_password
返回给HTTP API的客户端,因为只有服务器才应该这样做知道关于。因此,为此,我们有一个单独的类UserDto
或UserResponseModel
,其类具有要发送给API用户的属性。
Automapper和类似的库通常用于通过将一个对象映射到另一个对象来简化此过程。
我在某处读到Golang中不存在这种模式,并且将C#和Java模式应用于Go(??)之类的语言通常是错误的。
如果是这样,那么如何将数据模型和/或域模型与API模型分开?