问题标签 [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.
graphql - graphql-spqr:如何将 GraphQL 属性添加到实体
我有一个基本的 Java 实体类。
此类在 GraphQL 查询中返回
到目前为止,这工作正常。现在我想在 GraphQL 查询中返回一个附加属性。但是该附加属性的计算成本非常高。所以我只想返回它,当 GraphQL 客户端在他的查询中实际请求它时,如下所示:
query { getResult() { resultTitle resultDecription } }
<== 不执行昂贵的计算query { getResult() { resultTitle resultDecription costlyAdditionalProp } }
<== 执行昂贵的计算
这可以用graphql-spqr完成吗?
graphql-spqr - Graphql Schema doku 使用 Input 自动显示 Input 类型
如自述文件中所述,我添加了leagen/graphql-spqr。在我们有一个像 customtype.types.gql 这样的 graphql 类型的自定义实现之前。
实施后,一切正常,除了称为 OperatorInput 的类型,在自动生成的 graphql 文档中命名,如“OperatorInputInput”。我试图在声明中像这样更改它:
但它没有被应用。你知道任何解决方法吗?
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 更安全。
java - 用于反应器网络的 Graphql SPQR 批量加载器
如何使用 AsyncExecutionStrategy 为 queryExecutionStrategy 设置 batchLoader?
例如我有 3 个实体:用户发表评论
配置
图式
在我的 pom.xml 中包括
当我更改 queryExecutionStrategy(BatchedExecutionStrategy),将 @Batched 标记为 @GraphQLQuery 方法和时,这适用于响应列表,但批处理:
- 已弃用,当返回通量时 - 这是对块的调用。
- 需要返回列表,而不是通量
例如,如何实现 BatchLoader 和更新模式 - 对于 Post?我读了这个老问题,但不明白https://github.com/leangen/graphql-spqr/issues/182和https://github.com/leangen/graphql-spqr/issues/178
spring-security - 使用 @PreAuthorize 的 GraphQL 和 Spring Security?
我在设置 spring 安全性和禁用/启用对经过 jwt 身份验证的基于角色的用户的 graphql
服务访问时遇到问题。所有其他REST
端点都受到适当保护,JWT
身份验证和基于角色的授权正常工作。
到目前为止我所拥有的:
在我的WebSecurityConfigurerAdapter
课堂上,我有以下代码:
在graphql
服务中,我有一个@PreAuthorize
:
在启用 JWTlocalhost:8080/login
并发送graphql
查询后,使用上述配置和代码,我得到:
这是请求的样子Postman
:
GraphQL 查询:
和回应:
application.yml
文件:
query.graphqls
文件:
spring-boot - GraphQL SPQR 获取服务器端的所有字段
我是 Spring Boot 的新手,我刚开始将 graphql-spqr 用于 Spring Boot,因为它可以轻松引导 Java 项目。
但是,据我了解,GraphQL 基本上允许从数据库中获取选定的字段。根据示例,我已经看到,graphql-spqr 库中的这种选择发生在客户端。有没有办法在客户端和服务器端进行选择以加快查询速度?
我研究了 GraphQL 的 EntityGraph 示例,但它们主要是为涉及 JOIN 的复杂查询实现的。findAll()
但是,对于诸如等的简单查询,什么都不存在findById()
。
我想findAll()
与服务器一起使用,只获取客户端请求的字段。我怎样才能做到这一点?
graphql - GraphQL 联合:如何消费,而不是扩展
我有一个返回Product
s 的服务,我可以通过 GraphQL Federation 在返回Review
s 的服务中扩展它。审查服务取决于Product
s,这种解耦简直太棒了!
我还有一个订单服务,它存储(除其他外)OrderItem
具有productId
:
现在我希望客户端也能够直接从Product
被引用的字段中选择任何字段productId
:
如果我编写了一个普通的解析器来添加该product
字段,我将不得不复制完整的Product
模型(并在更改时更新订单服务Product
)。我不想那样。我也想在这里利用联邦。
我希望订单服务扩展(并因此依赖)Product
,但只知道它的 id,而产品服务必须不知道任何关于订单服务的信息。所以这是在审查服务中看到的依赖关系的反转。我不想从另一个服务添加到模型中,我希望客户端能够使用它,而我的服务不知道细节。
我认为这种方式应该更容易,但我太盲目了,看不到我需要做什么!我找不到这样的例子或教程或任何东西。
我将衷心感谢您的帮助!
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?
java - 使用自定义 GraphQL 查询通过 SPQR (Java) 解析嵌套字段
目前,我正在尝试使用 Dataloader 模式 ( java-dataloader
) 、Java
、Spring Boot
和SPQR
来解决 N+1 问题Java Dataloader
。
我目前的实体设置如下:
这是公司对象(在上面的类中引用)
我的 SPQR Resolvers/GraphQLApis 如图所示:
我的数据加载器都设置正确,但我需要Employee
实体的company
字段来使用数据加载器,如getCompanyById
查询中所示 - 以避免相关对象的 N+1 问题。
如果我完全错了,请说 - 我是 SPQR 的菜鸟。任何答案或澄清问题将不胜感激!谢谢!