问题标签 [graphql-spqr]

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 回答
109 浏览

graphql - graphql-spqr:如何将 GraphQL 属性添加到实体

我有一个基本的 Java 实体类。

此类在 GraphQL 查询中返回

到目前为止,这工作正常。现在我想在 GraphQL 查询中返回一个附加属性。但是该附加属性的计算成本非常高。所以我只想返回它,当 GraphQL 客户端在他的查询中实际请求它时,如下所示:

  • query { getResult() { resultTitle resultDecription } } <== 不执行昂贵的计算
  • query { getResult() { resultTitle resultDecription costlyAdditionalProp } } <== 执行昂贵的计算

这可以用graphql-spqr完成吗?

0 投票
1 回答
112 浏览

graphql-spqr - Graphql Schema doku 使用 Input 自动显示 Input 类型

如自述文件中所述,我添加了leagen/graphql-spqr。在我们有一个像 customtype.types.gql 这样的 graphql 类型的自定义实现之前。

实施后,一切正常,除了称为 OperatorInput 的类型,在自动生成的 graphql 文档中命名,如“OperatorInputInput”。我试图在声明中像这样更改它:

但它没有被应用。你知道任何解决方法吗?

0 投票
1 回答
359 浏览

spring-security - 具有弹簧安全性的 JWT 身份验证 graphql-spqr

我在我的 spring boot 应用程序中使用 graphql-spqr-spring-boot-starter,版本 0.0.5。

@GraphQLApi 和 @GraphQLQuery 工作正常,我也在 /gui 上获取数据。

但是正如许多人所面临的那样,我正在尝试在 graphql 服务器调用上应用身份验证部分。我在我的应用程序中使用 JWT 令牌进行 REST API 授权/身份验证。

所以我有令牌,我想它也可以在这里用于验证。

我试过使用:

但它给出了编译时错误:

io.leangen.graphql.metadata.exceptions.TypeMappingException:com.sun.proxy.$Proxy90 类型的注册对象似乎是动态生成的代理

对于这些和其他可能的问题,使用像 spring-boot-starter 这样的包装器 graphql 库更好,还是使用我手中更多步骤的 graphql-spqr 更安全。

0 投票
0 回答
99 浏览

java - 用于反应器网络的 Graphql SPQR 批量加载器

如何使用 AsyncExecutionStrategy 为 queryExecutionStrategy 设置 batchLoader?

例如我有 3 个实体:用户发表评论

配置

图式

在我的 pom.xml 中包括

当我更改 queryExecutionStrategy(BatchedExecutionStrategy),将 @Batched 标记为 @GraphQLQuery 方法和时,这适用于响应列表,但批处理:

  1. 已弃用,当返回通量时 - 这是对块的调用。
  2. 需要返回列表,而不是通量

例如,如何实现 BatchLoader 和更新模式 - 对于 Post?我读了这个老问题,但不明白https://github.com/leangen/graphql-spqr/issues/182https://github.com/leangen/graphql-spqr/issues/178

0 投票
1 回答
751 浏览

spring-security - 使用 @PreAuthorize 的 GraphQL 和 Spring Security?

我在设置 spring 安全性和禁用/启用对经过 jwt 身份验证的基于角色的用户的 graphql服务访问时遇到问题。所有其他REST端点都受到适当保护,JWT身份验证和基于角色的授权正常工作。

到目前为止我所拥有的:

在我的WebSecurityConfigurerAdapter课堂上,我有以下代码:

graphql服务中,我有一个@PreAuthorize

在启用 JWTlocalhost:8080/login并发送graphql查询后,使用上述配置和代码,我得到:

这是请求的样子Postman

在此处输入图像描述

GraphQL 查询:

和回应:

application.yml文件:

query.graphqls文件:

0 投票
1 回答
210 浏览

spring-boot - GraphQL SPQR 获取服务器端的所有字段

我是 Spring Boot 的新手,我刚开始将 graphql-spqr 用于 Spring Boot,因为它可以轻松引导 Java 项目。

但是,据我了解,GraphQL 基本上允许从数据库中获取选定的字段。根据示例,我已经看到,graphql-spqr 库中的这种选择发生在客户端。有没有办法在客户端和服务器端进行选择以加快查询速度?

我研究了 GraphQL 的 EntityGraph 示例,但它们主要是为涉及 JOIN 的复杂查询实现的。findAll()但是,对于诸如等的简单查询,什么都不存在findById()

我想findAll()与服务器一起使用,只获取客户端请求的字段。我怎样才能做到这一点?

0 投票
1 回答
299 浏览

graphql - graphiQL 未显示 GraphQL schmea (spring graphql-spqr)

我正在使用带有graphql-spqr的spring-boot。GraphQL 查询和突变工作。但是 GraphiQL webfrontend 没有在最右边一列的“文档资源管理器”中显示架构。为什么?

我的 graphql 控制器

GraphiQL 显示“schmea”,但在文档选项卡中不显示任何内容。
在此处输入图像描述

0 投票
1 回答
59 浏览

graphql - GraphQL 联合:如何消费,而不是扩展

我有一个返回Products 的服务,我可以通过 GraphQL Federation 在返回Reviews 的服务中扩展它。审查服务取决于Products,这种解耦简直太棒了!

我还有一个订单服务,它存储(除其他外)OrderItem具有productId

现在我希望客户端也能够直接从Product被引用的字段中选择任何字段productId

如果我编写了一个普通的解析器来添加该product字段,我将不得不复制完整的Product模型(并在更改时更新订单服务Product)。我不想那样。我也想在这里利用联邦。

我希望订单服务扩展(并因此依赖)Product,但只知道它的 id,而产品服务必须不知道任何关于订单服务的信息。所以这是在审查服务中看到的依赖关系的反转。我不想从另一个服务添加到模型中,我希望客户端能够使用它,而我的服务不知道细节。

我认为这种方式应该更容易,但我太盲目了,看不到我需要做什么!我找不到这样的例子或教程或任何东西。

我将衷心感谢您的帮助!

0 投票
1 回答
279 浏览

spring-boot - GraphQL:如何为 graphql spqr 和 spring boot 编写 junit 测试

我已经使用以下 lib - https://github.com/leangen/graphql-spqr使用 Spring Boot 实现了 GraphQL 端点。我目前有使用 WebTestClient 的 REST 端点的 junit,并尝试以类似的方式为 spqr 编写 junit,但这不起作用。

GraphQL 支持所有端点的 POST 方法,所以有人知道如何使用 Web 测试客户端传递查询和变异请求,或者有没有其他方法可以为 spqr lib 编写 junit?

0 投票
0 回答
116 浏览

java - 使用自定义 GraphQL 查询通过 SPQR (Java) 解析嵌套字段

目前,我正在尝试使用 Dataloader 模式 ( java-dataloader) 、JavaSpring BootSPQR来解决 N+1 问题Java Dataloader

我目前的实体设置如下:

这是公司对象(在上面的类中引用)

我的 SPQR Resolvers/GraphQLApis 如图所示:

我的数据加载器都设置正确,但我需要Employee实体的company字段来使用数据加载器,如getCompanyById查询中所示 - 以避免相关对象的 N+1 问题。

如果我完全错了,请说 - 我是 SPQR 的菜鸟。任何答案或澄清问题将不胜感激!谢谢!