如何使用 SPQR 获取生成的方案文件 .graphqls?

Posted

技术标签:

【中文标题】如何使用 SPQR 获取生成的方案文件 .graphqls?【英文标题】:How to get the generated scheme file .graphqls using SPQR? 【发布时间】:2019-02-04 18:41:25 【问题描述】:

我真的很喜欢 SPQR 让 graphql 与现有系统轻松集成的方式,我唯一想看到的是 .graphqls 文件,这样我就可以了解更多关于 GraphQL 语法的信息。

有没有办法从集成了 SPQR 注释的现有代码生成方案文件?

为了提供一些代码,让我们使用来自GitHub site的相同代码

实体:

public class User 

    private String name;
    private Integer id;
    private Date registrationDate;

    @GraphQLQuery(name = "name", description = "A person's name")
    public String getName() 
        return name;
    

    @GraphQLQuery
    public Integer getId() 
        return id;
    

    @GraphQLQuery(name = "regDate", description = "Date of registration")
    public Date getRegistrationDate() 
        return registrationDate;
    

服务类:

class UserService 

    @GraphQLQuery(name = "user")
    public User getById(@GraphQLArgument(name = "id") Integer id) 
      ...
    

预期输出:

type User 
    id: Int!
    name: String!
    registrationDate: String


Query
 user(Int):User 

【问题讨论】:

【参考方案1】:

这并不是真正的 SPQR 特定的。所有需要的类都由 graphql-java 自己提供:

new SchemaPrinter().print(schema);

要获得更详细的输出(带有标量、自省类型等),请向打印机提供选项:

new SchemaPrinter(
                  // Tweak the options accordingly
                  SchemaPrinter.Options.defaultOptions()
                          .includeScalarTypes(true)
                          .includeExtendedScalarTypes(true)
                          .includeIntrospectionTypes(true)
                          .includeSchemaDefintion(true)
            ).print(schema);

【讨论】:

我正在使用 spqr-spring-boot-starter 库。您能帮我在上面的代码 sn-p 中获取schema 的实例吗? @Anita 你应该可以简单地注入它。【参考方案2】:

在应用程序属性中添加graphql.spqr.gui.enabled=true 启用gui(playground)。可以从 GUI 浏览和下载架构和文档。

【讨论】:

以上是关于如何使用 SPQR 获取生成的方案文件 .graphqls?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Graphql SPQR 实现订阅?

如何使用 Graphql SPQR 实现查询过滤器和排序?

使用 graphql-spqr、java 和 mongo 进行中继分页

无法摆脱 graphql-spqr-spring-boot-starter 中的“获取数据时异常(/apiName)”

我们如何从 GraphQL 的 RequestContextHolder 获取 GraphQL 的 HttpServletRequest(DefaultGlobalContext)(使用 graphq

如何查询 GraphQL SPQR