出于好奇,我开始阅读关于GraphQL的知识。根据this article上的示例,它看起来像REST API请求。它是无国籍的吗?意味着它没有请求,服务器没有响应?如果是,那么它是如何比REST API更轻的资源?GraphQL无状态吗?
1
A
回答
1
它是无状态的吗?
是的,只要服务器不需要任何客户端状态知识来正确解释请求;所有必要的信息都包含在请求本身(标题和正文)中。
它看起来像REST API请求给我。
它可能没有。它在超媒体约束上完全失败(规范缺少对链接的任何引用,这是一个很大的暗示)。 “资源”有点混乱。
HTTP通常与REST,它使用 “资源” 作为其核心概念相关联。相比之下,GraphQL的概念模型是一个实体图。因此,GraphQL中的实体不会被URL标识。
因此,您得到了许多不同的URI,指向实体图的不同子集的表示,以及用于图的所有修改的单个URI。在统一界面的后面,这些“资源”将全部使用单一路线实施。
REST is an architectural style,“选择它们在候选架构上引发的属性”。看起来好像GraphQL对不同的一组属性感兴趣;也就是说他们正试图解决一个不同类型的问题。
2
GraphQL通常被认为比REST更有效率,因为它允许客户端在一个请求中请求多个资源,这样可以节省往返时间,并且还允许客户端只过滤他们实际需要的字段。因此,在一天结束时,请求完成的方式看起来很相似,但更强大的查询语言允许客户端准确获取所需的数据,而不再需要更多。
是的,它就像REST一样是无状态的。实际上有些人可能会说GraphQL满足REST描述的许多原始要求。
相关问题
- 1. Graphql使用redux状态以及Apollo
- 2. 这个Spring bean是无状态的吗?
- 3. Linq有无状态会话的Nhibernate吗?
- 4. BLL应该是无状态的吗?
- 5. GraphQL支持Websockets吗?
- 6. Passport.js无状态
- 7. Django无状态?
- 8. Angular 2无状态或有状态?
- 9. 有状态与无状态Web服务
- 10. 无状态的饼干VS全状态
- 11. 有状态和无状态流处理
- 12. 无法解析从状态“状态”“”
- 13. Keras - 有状态vs无状态LSTM
- 14. 具有无状态的分层状态
- 15. 有状态Web服务与(状态Bean +无状态WS)
- 16. 无法解析从状态 '状态2' '状态1' 从一个状态
- 17. Admob状态无效
- 18. Amf PHP无状态?
- 19. 我需要mongoose和graphql吗?
- 20. Ruby中的动态状态机?状态机必须是类吗?
- 21. web的含义是无状态的,http是无状态协议?
- 22. 无状态会话Bean vs无状态Singleton
- 23. 实用程序/助手无状态静态类vs无状态非静态类
- 24. 可以重新使用416状态码的HTTP状态码吗?
- 25. 状态模式对只读状态有用吗?
- 26. Redux翻转卡状态 - 它应该是有状态组件吗?
- 27. 状态机和状态图表示相同吗?
- 28. 可以在状态机中进行状态转换吗?
- 29. 我可以访问状态中的其他状态变量吗?
- 30. Wicket:无状态页面中的无状态AJAX行为,无序列化
这里有几个问题:1.许多人称为REST的API不支持HATEOAS或链接,并且人们将其称为REST,2.您可以完全通过GET请求发送GraphQL查询参数,可以像往常一样缓存。 – stubailo
没有这么相关的问题:既然它们都基于HTTP,我仍然可以使用相同的Oauth 2.0和OpendID连接令牌的实现吗? –
使用GET方法的好处;我发现一些不好的/旧的东西,表明一切都是通过POST。 – VoiceOfUnreason