我在NoSQL数据库前面创建了一个简单的REST API,它将记录存储为类似于JSON的文档(但不完全相同)。每条记录都有一些字段,包括数据库的id
,还包括一些派生字段,如dateCreated
。
任何时候我得到任何东西,我想要返回所有字段的对象。
// GET /users returns an array of these in JSON
// [{id:"xxx", name:"Bobby", dateCreated:"YYYY-MM-DD"]
data User = User { id :: String, name :: String, dateCreated :: XXX }
但是,无论何时POST或PUT任何东西,他们的客户端都应该发送一个带有id
字段的对象,并且缺少任何派生字段。数据库负责在保存时创建id,我会创建一些派生字段
// POST /users would need you to post only the name.
// {name:"Henry"}
data PartialUser = PartialUser { name :: String }
如果资源代表User
类型的对象,我应该将客户端发送给我的是什么?您会创建所有派生字段Maybe
值吗?或者你会创建一个名为PostedUser
的第二个对象吗?
答案 0 :(得分:1)
可能有很多事情:
我会将它设为CreateUser命令,但如果您不想使用CQRS和DDD,那么您可能会将其称为PartialUserRepresentation,或者您不创建数据结构,只需使用属性创建一个新的用户实体。 OFC。如果你使用实体。
所以我想说这取决于你的系统架构。