问题标签 [graphql-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1933 浏览

mysql - 示例项目无法启动

配置文件

Schema.graphqls

错误

0 投票
0 回答
674 浏览

gradle - 使用 gradle 构建客户端项目时从服务器下载 graphQL 模式

作为客户端系统开发人员,我想在构建(使用 Gradle)我的 spring-boot 项目时从服务器下载 GraphQL 模式。根据 ApolloGraphQL 指南 (apollographql.com/docs/ios/downloading-schema.html),我们可以使用 Node.js 的 Apollo-codegen 下载模式。我没有在我的项目中使用 Node.js,我也不允许使用它。你能帮我吗 - 我每次使用 Gradle 构建项目时如何从服务器下载模式。

0 投票
4 回答
41738 浏览

graphql - 如何公开具有不同名称的graphql字段

我正在探索 GraphQL 并想知道是否有任何方法可以重命名响应字段,例如我有一个带有这些字段的 POJO

GraphQL 查询:

我的回答是这样的

我可以将名称字段重命名为 userName 之类的名称,以便我的回复如下

0 投票
6 回答
5710 浏览

spring - 带有graphql-spring的LazyInitializationException

我目前正在将我的 REST-Server 迁移到 GraphQL(至少部分地)。大部分工作已经完成,但我偶然发现了这个我似乎无法解决的问题:Graphql 查询中的 OneToMany 关系,使用 FetchType.LAZY。

我正在使用: https ://github.com/graphql-java/graphql-spring-boot 和 https://github.com/graphql-java/graphql-java-tools进行集成。

这是一个例子:

实体:

架构:

解析器:

如果我现在使用此(速记)查询查询端点:

我得到:

org.hibernate.LazyInitializationException:未能延迟初始化角色集合:Show.competitions,无法初始化代理 - 无会话

现在我知道为什么会发生这个错误以及它意味着什么,但我真的不知道要为此应用修复程序。我不想让我的实体急切地获取所有关系,因为这会否定 GraphQL 的一些优势。我可能需要寻找解决方案的任何想法?谢谢!

0 投票
2 回答
1837 浏览

java - 在 Tomcat 中注册 SimpleGraphQLServlet

我正在尝试使用graphql-spqr将 GraphQLServlet 添加到我现有的网络服务中。

我已经添加了正确的注释,现在只需要设置 GraphQL 端点,这是我苦苦挣扎的地方。我发现的所有教程和谷歌结果都指的是类graphql.servlet.SimpleGraphQLServlet的不推荐使用的构造函数

我可以像这样创建一个 servlet 对象:

但我不知道是否以及如何注册 servlet 实例。搜索引擎要么误解了我的搜索,要么是空的。

我很感激任何指示。

0 投票
1 回答
182 浏览

rest - 严格使用 GraphQL 作为查询语言

我认为我的问题很常见,我正在权衡 GraphQL 作为解决方案的成本和收益。

我正在开发一个产品,其数据由基于 CRUD 的单一 REST API 存储。我们的应用程序组件公开了一个数据搜索接口,当然需要某种服务器端支持来请求该数据。这可能包括排序、过滤、选择字段等。当然,还有更传统的方法可以在 REST 上下文中提供这些功能,例如端点的查询参数附加组件,但在此尝试 GraphQL 会很酷context 为扩展其用于查询的用途奠定了基础。

GraphQL 公开了一种非常好的查询语言来搜索数据,并最终允许我专门针对我的领域定制搜索语言。但是,我不确定是否有一种很好的方法来利用 IDL 而无需完全管理单独的服务器。

以以下 Java Jersey API 概念验证示例为例:

我只是打算将一个请求正文放入我的 Jersey 服务器,它看起来与发送到 GraphQL 服务器的请求完全一样。然后,我利用一些库支持来解释和执行数据请求。

没有真正考虑太多可能出错的事情,看起来客户端可以使用这个 API,就像他们使用 GraphQL 服务器的方式一样,除了我不需要管理单独的服务器只是为了方便我的搜索需求。

在这样的基于端点的上下文中使用 GraphQL IDL 看起来有价值还是愚蠢?

0 投票
1 回答
310 浏览

graphql - 在 GRAPHQL-JAVA 中公开查询的问题

我是 Graphql-Java 的新手,我正在尝试将两个 *.graphqls 文件作为数组加载到模式中。每个模式都定义了单独的查询。服务器启动后,我只看到最后一个文件中的查询被公开。我的代码如下。

A.graphqls

B.graphqls

我看到只有“queryThree”被暴露了。

我正在加载如下。

请强调,我在哪里做错了。

0 投票
1 回答
519 浏览

java - 以编程方式创建的模式中的 graphql-java 变量强制(必需)

我是 GraphQL 和 graphql-java 的新手。我正在尝试以编程方式创建此架构

我不知道如何使该name字段不为空String! 默认情况下这是可选的。

0 投票
1 回答
1402 浏览

java - 将 apollo 跟踪添加到 GraphQL Spring

我正在尝试使用 graphql-spring-boot-starter 构建 GraphQL 服务器,并对 Apollo 跟踪(https://github.com/apollographql/apollo-tracing)感兴趣,它在扩展的跟踪键下添加了额外的数据。

添加跟踪工具后,我的响应没有任何变化。我在这里错过了什么吗?

要求 :

回复 :

我提供了 TracingInstrumentation Bean。并且 bean 也被 GraphQLWebAutoConfiguration 拾取。

我尝试在 GraphQLWebAutoConfiguration 处调试并打断点,该工具已添加到 GraphQLServlet bean 中。

以下是有关我的示例项目的一些详细信息:

resources/graphql/schema.graphqls

User和的实体和存储库Link

解析器和查询解析器:

build.gradle

谢谢你。

0 投票
2 回答
1229 浏览

java - 使用 Relay Modern 和 GraphQL 上传文件

因此,我已经研究了两天,对 Java 的了解还不够,无法完全实现解决此问题的方法。在客户端,我找到了一些优秀的用户文档,并相信我有正确的部分,但是在处理服务器中的入站 multipart/formdata 时,我有点迷茫。

我的应用程序的基础是基于HowToGraphQL Java教程,因为我觉得他们在组织代码库方面做得很好,并且使事情变得非常简单易懂。不幸的是,文件上传不是他们涵盖的领域,并且根据 graphql-java 包的维护者,不存在直接支持此功能的计划

然而,这并不是说这是不可能的。GraphQL 规范旨在成为指导方针,社区如何选择调用规范取决于他们。许多人成功地结合了文件上传,尽管通常是通过包含自定义中间件

不幸的是,对我来说,障碍可能只是缺乏领域知识。我主要使用 JavaScript 和 Python 工作,并且主要有 Java 的学术经验。不完全确定从哪里开始,但我想我需要追踪我认为绑定到 SimpleGraphQLServlet 类的响应对象,并找到一种方法来提取入站文件对象。

希望获得更多专家建议或帮助提出解决方案。我还没有在 SO 上找到任何可靠的基于 Java 的片段来解决这个问题,因此解决这个问题可能会使其他尝试采用这个平台的人受益。

编辑:

可能找到了一种方法来做到这一点,但仍然没有制定出具体细节。在扩展 SimpleGraphQLServlet 类的 GraphQLEndpoint 类中,我们公开了 doPost() 方法。然而,提取数据最终会导致一系列错误,第一个错误是通过 @MultipartConfig 注释解决的,但是下一个错误让我再次停滞不前。“缺少 MultiPart 请求的内容。”

这个 doPost() 方法似乎是在发生突变后调用的,所以即使我设法提取了文件数据,似乎数据也会放在错误的位置。此外,我想知道丢失的内容是否是 Mutation 消耗帖子数据的结果,假设它甚至到达了。

然而,所有其他参数都完好无损,因此只需访问此文件即可。