首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DGS代码生成插件仅生成模式的类型

DGS代码生成插件仅生成模式的类型
EN

Stack Overflow用户
提问于 2021-10-06 07:01:27
回答 2查看 428关注 0票数 0

我是GraphQL的新手。目前,我正在尝试使用Netflix的DGS框架生成一个GraphQL客户端。我使用SWAPI的模式作为我的Domain Graph Service的GraphQL模式文件。但该工具只生成与类型相关的类和接口。但是不会像预期那样生成查询API。这是我的build.gradle文件

代码语言:javascript
复制
plugins {
    id 'org.springframework.boot' version '2.5.5'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id("com.netflix.dgs.codegen") version "5.1.2"
}

group = 'com.clients.netflix'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:2.5.5'
    developmentOnly 'org.springframework.boot:spring-boot-devtools:2.5.5'
    testImplementation 'org.springframework.boot:spring-boot-starter-test:2.5.5'
    implementation 'com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter:4.8.3'
}

test {
    useJUnitPlatform()
}

generateJava {
    generateClient = true
    generateDataTypes = true
}

有没有正确的方法来做这件事,或者这是框架中的一个问题?

EN

回答 2

Stack Overflow用户

发布于 2021-10-07 09:33:46

这才是正确的行为。正如您可以在文档中读到的那样,该生成器生成示例API

DGS代码生成插件在项目的构建过程中根据域图服务的GraphQL模式文件生成代码。该插件生成以下内容:类型的数据类型、输入类型、枚举和接口。包含类型和字段名称的DgsConstants类示例数据抓取器表示查询的类型安全查询API

DOC

生成器并不知道你想如何从你的数据库中获取数据。

如果想要生成示例,必须添加

代码语言:javascript
复制
generateJava {
  ...
  includeQueries = ["hello"]
  includeMutations = [""]
}
票数 0
EN

Stack Overflow用户

发布于 2021-11-27 16:32:56

只是碰巧遇到了同样的问题!

我认为在GQL规范中定义查询/突变/订阅类型的方式与随后在DGS库中处理的方式有一点不同:

代码语言:javascript
复制
private fun generateJavaClientApi(definitions: Collection<Definition<*>>): CodeGenResult {
    return if (config.generateClientApi) {
        definitions.asSequence()
            .filterIsInstance<ObjectTypeDefinition>()
            .filter { it.name == "Query" || it.name == "Mutation" || it.name == "Subscription" }
            .map { ClientApiGenerator(config, document).generate(it) }
            .fold(CodeGenResult()) { t: CodeGenResult, u: CodeGenResult -> t.merge(u) }
    } else CodeGenResult()
}

以及它们是如何在swapi gql模式中指定的:

代码语言:javascript
复制
schema {
  query: Root
}

哇哦!将对象类型定义重命名为Query可以解决此问题。不过,这是swapi模式的一个bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69461192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档