Netflix DGS代码生成插件仅生成Schema类型未生成查询API问题咨询
问题原因
Netflix DGS代码生成插件不会仅根据Schema文件自动生成全量查询API,generateClient=true配置的作用是基于你自定义的GraphQL查询文件生成对应的客户端调用封装类,你当前缺少自定义查询文件,所以只会生成Schema对应的类型类,不属于框架本身缺陷。
解决步骤
- 第一步:创建查询文件存储目录
默认情况下插件会读取src/main/resources/graphql-client目录下后缀为.graphql的查询文件,你需要先手动创建该目录。 - 第二步:编写自定义GraphQL查询
在上述目录中新建查询文件,比如swapi-queries.graphql,写入你实际需要调用的查询,示例如下:query getPerson($personId: ID!) { person(id: $personId) { name birthYear gender homeworld { name } } } query listAllFilms { allFilms { films { title releaseDate director } } } - 第三步:补充完善
generateJava配置(可选但推荐)
你可以在build.gradle的generateJava块中指定生成代码的包名,避免默认包名混乱:generateJava { generateClient = true generateDataTypes = true // 生成类型类的包名 packageName = "com.clients.netflix.generated.types" // 生成客户端API的包名 clientPackageName = "com.clients.netflix.generated.client" } - 第四步:重新执行代码生成任务
运行Gradle命令./gradlew generateJava,即可在build/generated/sources/dgs-codegen目录下看到生成的对应查询请求类、响应结果类,以及可直接注入使用的DGS客户端调用封装方法。
内容的提问来源于stack exchange,提问作者Sachini Ranasinghe
相关产品推荐
相关产品推荐

