【发布时间】:2020-01-30 23:46:32
【问题描述】:
在 Spring Boot 应用程序中,我们已经拥有一个功能齐全的 GraphQL 端点,通过 GraphQL Java 工具提供.graphqls 文件(我们包含了graphql-spring-boot-starter 依赖项)并通过我们的基础Query 类处理数据解析实现GraphQLQueryResolver 和后续的GraphQLResolver。
出于业务需求,我们必须重新创建标准 REST API 端点,所以我想知道为什么不直接调用 GraphQL(而不必再次“手动”重新实现数据解析)? 由于它在同一个后端应用程序中,无需进行 HTTP 或 servlet (ForwardRequest) 调用,只需调用 Java 中的一些 API。 问题是我不知道该怎么做。
我阅读了这个示例,但它使用的是基本的 GraphQL Java(不是工具): https://www.graphql-java.com/documentation/v9/execution/
我知道这应该是可能的,因为我们可以在测试中这样做: https://github.com/graphql-java-kickstart/graphql-spring-boot/blob/master/example-graphql-tools/src/test/java/com/graphql/sample/boot/GraphQLToolsSampleApplicationTest.java
但是如何在常规代码中做到这一点?没有GraphQLTemplate 这样的东西。
我还尝试在以下位置搜索示例:
- https://github.com/graphql-java-kickstart/graphql-java-tools/tree/master/example
- https://github.com/graphql-java-kickstart/graphql-spring-boot
但没有找到与我们的需求相关的内容。
在文档中找不到更多内容:
我错过了什么?理想情况下,我希望像这样注入一些GraphQLSomething:
@RestController
@RequestMapping(path = "api")
public class CompanyController {
@Autowired
private GraphQLSomething graphQLSomething;
@GetMapping("company/{id}")
public ResponseEntity<?> societe(@PathVariable @NotNull Integer id) {
GraphQLSomethingResult result = GraphQLSomething.query("company(id: $id) { id name andsoone }", "{ \"id\": 123456 }").execute(); // not really sure of the GraphQL syntax here, but it'll need some tests...
return result.getDataOrElse();
}
}
【问题讨论】:
标签: java spring-boot graphql graphql-java graphql-java-tools