【发布时间】:2017-03-12 14:02:19
【问题描述】:
我的数据模型有两个资源:Folder 和 Messages。每条消息都属于一个文件夹。有时我会想要获取文件夹列表(包括每个文件夹的一些字段)。有时我会想要获取特定文件夹的详细信息(包括该文件夹的一些字段和消息)。
在 Rails/RESTful 系统中,这将对应于 Folder 资源上的 index 和 show 操作;后者将接收指定所需文件夹的id 参数。这个模式在“惯用的”GraphQL 中会是什么样子?
一种方法可能是每个操作都有一个字段:
type Query {
folders: [Folder]
folder(id: String!): Folder
}
这里有一些重复,看起来很混乱,使客户更难自省和理解架构。
也许可以使用可为空的参数删除重复项:
type Query {
folder(id: String): [Folder]
}
如果传递了id,则只会返回Folder 的详细信息(作为一项数组)。如果id 是nil,那么它将获取所有文件夹的详细信息。这种重载似乎增加了一些隐藏的复杂性。
哪种方法是“更好的做法”?有没有更好的方法来模拟这种情况?
【问题讨论】:
-
对此有何回顾?我有很多模型,其中将使用详细视图和列表视图。我完全支持方法 2,因为它实现起来更简单,并且将架构保持一半大小。是否出现了任何问题,例如客户期望的详细路线但未找到?
标签: rest restful-architecture graphql