在上一篇文章中,我们讨论了GraphQL与REST相比的优势。 在本文中,我们将看到GraphQL的实际应用。 我创建了一个示例应用程序来展示REST和GraphQL之间的差异。 首先,我们将看到简单产品详细信息终点的REST实现。 我已经使用Spring Boot演示REST。 下载示例项目,并按照README中概述的步骤设置项目。 我不在这里讨论设置细节,因为它超出了本文的范围。 假设您的项目已启动并正在运行,以调用http:// localhost:8080 / product / {product_id}端点以获取产品详细信息JSON,如下所示。
如果您在JSON之上看到,虽然我们对给定产品的所有元素都不感兴趣,但我们正在获取包括评论和技术规格在内的整个产品JSON。
现在,我们将通过有选择地获取产品详细信息来了解GraphQL的实际应用。 为了再次演示GraphQL,我使用了Spring Boot。 下载示例项目,并按照README中概述的步骤设置项目。 我不在这里讨论设置细节,因为它超出了本文的范围。 假设您的项目已启动并正在运行,以查看GraphQL的实际效果。 在这种情况下,我只想获取给定产品的产品ID,标题,简短描述和标价。 让我们看看如何查询以获得感兴趣的详细信息。
现在,作为服务消费者,我有兴趣获取产品ID,标题,简短描述,标价和评论。 在这种情况下,GraphQL提供了查询所需内容的灵活性。 当我们使用GraphQL时,请参见下面的查询和响应。
![GraphQL](https://www.javacodegeeks.com/wp-content/uploads/2019/03/graphql2.gif)
为了演示GraphQL,我使用了基于GUI的插件GraphiQL。 为了从其他应用程序消费,我们可以在application.properties中配置端点。
graphql.servlet.mapping=/graphql
graphql.servlet.enabled=true
graphql.servlet.corsEnabled=true
现在,我们可以通过传递URL编码的查询参数来调用上述端点,如下所示。 您可以了解有关查询和变异的更多信息https://graphql.org/learn/queries/
希望您喜欢这篇文章。 我将再来另一篇文章。 直到那时, 快乐学习!!!
翻译自: https://www.javacodegeeks.com/2019/03/ready-see-graphql-action.html