如何为JSON API和文档数据库建模数据

时间:2014-09-25 14:22:23

标签: json rest haskell nosql

我在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的第二个对象吗?

1 个答案:

答案 0 :(得分:1)

可能有很多事情:

  • 请求正文
  • 客户端的预期资源状态的表示
  • 您可以发送到域逻辑的命令DTO,以便通过CQRS处理它

我会将它设为CreateUser命令,但如果您不想使用CQRS和DDD,那么您可能会将其称为PartialUserRepresentation,或者您不创建数据结构,只需使用属性创建一个新的用户实体。 OFC。如果你使用实体。

所以我想说这取决于你的系统架构。