如何在不检查每个字段的情况下解析春季中获取的字段 graphql?

How to resolve fetched fields graphql in spring without checking each field?

提问人:Aleksandr 提问时间:11/16/2023 最后编辑:Aleksandr 更新时间:11/16/2023 访问量:16

问:

我正在学习 GraphQL,并决定使用 GraphQL、Spring Boot 3.1.3、Java 20 和 spring-boot-starter-graphql 库开发一个小型应用程序。

GraphQL 的主要功能之一是能够指定需要哪些字段。我找到了一个简单的解决方案,通过检查字段是否为必填项,使用字段获取器在 Java 中实现这一点:

FetchingFields fields = context.getFetchedFields();
List<Car> cars = new ArrayList<>();

if (fields.contains("engine")) // do something and get engine for cars

if (fields.contains("wheels")) // add wheels information to cars list

if (fields.contains("price")) // get price and add to list

但是,我不喜欢这个解决方案,因为它不可扩展。我不想有一个有 50 个 if 语句的方法。

使用 Spring Boot 时,在 GraphQL 中处理获取字段的最佳方法是什么?是否有任何模式或库可以简化此过程并使其更具可扩展性?

我将不胜感激任何建议和最佳实践,以创建一个高效且可维护的解决方案来获取我的 GraphQL 应用程序中的必填字段。

Spring spring-boot graphql

评论

1赞 Michel Floyd 11/16/2023
一个好的 GraphQL 服务器应该已经自动为你做这件事了。仅当请求该字段时,才应调用字段级解析程序。
0赞 Jorge Campos 11/16/2023
给定代码中的注释,无论哪种方式,您都需要代码来“做某事”。您可以使用可选,例如: 但同样,没有区别Optional.ofNullable(fields.get("engine")).ifPresent(f -> doSomething(f));

答: 暂无答案