我是GraphQL的新手,从最近几周开始我就在探索它。我正在为Java的GraphQL客户端寻找建议。
当我们在基于Java的应用程序上工作时,如果有人能向我介绍具有query/mutation/subscription.这样的基本特性的不同GraphQL Java客户端,我会非常感激。
我研究了其中的一些内容,比如Netflix的DGS框架,它与Spring集成,并提供注释支持。不过,在得出结论之前,如果我能在以下方面得到不同Java客户机的比较,我会非常感激的:
如果可能的话,请为流行的客户端分享各自的链接。
感谢你的帮助!!提前谢谢。
发布于 2022-05-18 04:24:56
编辑:正如您所提到的,这个答案集中在graphql服务器上。如果您想要的是graphql客户端,我会推荐 阿波罗客户,它很容易使用,并且可以做您需要的一切。
免责声明:我从来没有使用过DGS,在过去的一年里我也没有积极地使用graphql,事情可能已经改变了。我试过graphql tools和spqr。这个答案是固执己见的。
graphql实现graphql-java是在DGS之前出现的。它是开源的,您会发现很多项目都是在它的基础上构建的。为graphql本身添加功能的项目可以在图-java存储库中找到,这使得graphql非常模块化,并且适合您的需要。
例如:
Graphql非常冗长,我不建议按原样使用它。相反,我建议使用以下项目之一。
按照模式优先的方法,https://github.com/kobylynskyi/graphql-java-codegen从模式生成您的graphql服务器/客户端
https://github.com/leangen/graphql-spqr或https://github.com/Enigmatis/graphql-java-annotations遵循代码优先的方法,非常有效地利用注释从代码生成模式(spqr还提供了一个spring启动程序)。
https://github.com/graphql-java-kickstart/graphql-java-tools首先使用模式方法,允许您创建自己的DTO。它负责处理大部分锅炉板代码。它是Spring友好的(如果使用Spring框架,graphql tools解析器将非常直观),并且有一个spring启动启动。模式解析器和类发现功能强大,但却是模块化的。
特性
在特性方面,所有这些项目都利用graphql的特性,它们将非常相似。
主动开发与社区采用
graphql tools昨天更新了,spqr和graphql注释去年更新了,graphql-java-codegen在一月份更新了.从阅读堆叠溢出问题来看,graphql tools和spqr似乎是最受欢迎的--但我可能错了。
限制
我想不起来了。
易用性
SPQR为我赢得了这一奖项,注解非常直观,而且会让你走得更快。还有一个春季启动程序和一些示例项目。graphql-java-tools稍微复杂一些,但是它们有一个很好的文档和示例项目。我建议将SPQR用于较小/新的项目,以及用于大型项目或需要在现有代码基础上构建graphql的现有项目的graphql工具。为了我的个人项目,我搬到SPQR,从来没有后悔过。
开源
这个答案中引用的所有项目都是开源的。
最后一句话:
我认为代码优先方法(在java中定义api,让库生成模式)或模式优先方法(在模式文件中定义api,让库生成代码)可能是决定选择哪个库的最重要因素。您可以阅读我的回答和卡高(SPQR作者)的优秀答案来了解更多信息。
发布于 2022-05-29 19:55:32
如果您遵循模式优先方法,并且希望生成客户端类,我建议使用https://github.com/kobylynskyi/graphql-java-codegen。
下面是几个示例,说明如何使用生成的类构建请求并从GraphQL调用Java:
https://stackoverflow.com/questions/72251228
复制相似问题