let*_*ive 11 architecture rest web-applications graphql
根据我读到的文章,GraphQL在往返方面更具资源效率,它也可以做REST所能提供的.考虑到Web应用程序只是从头开始,软件架构师和开发人员可能决定继续使用REST而不是GraphQL,这是什么原因?此外,这是一个连续的项目,将从Web和移动消费和openID连接是一个要求.
Mar*_*ock 10
这是一个相当广泛的问题,但我会尝试从我自己的经验中回答。
REST 提供对特定资源(例如用户或产品)的访问。请求的结果可能是对您想要或使用什么数据的假设,即无论您是否使用所有数据,它都可能是关于该资源的一切。
还有N+1的问题。以用户拥有和属于多个关系场景为例;使用 RESTful API,您可以向用户发出请求,例如,/users/:id然后向他们的所有关系发出请求,例如/users/:id/relationships,这已经是两个请求。可能假设关系端点包括关系(朋友、家庭成员等)和结果数组中的用户,但如果 API 没有做出该假设,你将不得不做出对每个用户端点的请求,以获取每个关系中每个用户的数据。
这个例子也可以更深入;如果您想要所有二级关系(例如朋友的朋友)怎么办?
GraphQL 通过允许您具体询问您需要的内容来解决这个问题。您可以构造一个查询以返回深度数据:
query myQuery($userId: ID!) {
user(id: $userID) {
id
name
relationships {
id
type
user {
id
name
relationships {
id
type
user {
id
name
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Fragments 可以稍微清理一下,并且可能会出现递归问题,但您应该明白这一点;一个请求为您提供所需的所有嵌套数据。
如果您不太需要这种嵌套或相互连接的结果集,GraphQL 可能不会在收益和复杂性之间提供太多的权衡。
然而,我发现 GraphQL 的最大好处之一是它的可扩展性和自文档化。
我认为,除其他方面外,这也是用例的问题:
| 归档时间: |
|
| 查看次数: |
1164 次 |
| 最近记录: |