我当前的项目已切换到 GraphQL API,我希望自动生成与 Query/Mutations 请求/响应匹配的模型对象。
我只需要模型类,我不想在运行时在我的应用程序中使用诸如 Apollo 之类的工具。
我要求模型类是 Java 或 Kotlin。
我发现这个https://www.graphql-java-kickstart.com/tools/schema-definition/
然而,这似乎需要我自己创建模型类......
基于此声明“ GraphQL Java Tools will expect to be given three classes that map to the GraphQL types: Query, Book, and Author. The Data classes for Book and Author are simple:”
我错过了什么?
当我尝试使用 Apollo-cli 下载我的架构时,我收到此错误
~ - $ npx apollo-cli download-schema $https://my.graphql.end.point/graphql --output schema.json
Error while fetching introspection query result: only absolute urls are supported
Run Code Online (Sandbox Code Playgroud)
当然,这是使用 GraphQL 时的基本要求
小智 5
因此,如果我正确理解您,您要做的是 a) 从现有的 graphql 端点下载并在本地创建模式,以及 b) 从该模式创建 java 模型对象。
要下载架构,您可以使用graphql-cli. 首先通过安装npm install -g graphql-cli并运行graphql init以设置您的.graphqlconfig. 最后运行graphql get-schema以从定义的端点下载模式。
接下来,您要利用一个 Java 代码生成器,该生成器采用 GraphQL 模式并创建:
- GraphQL 查询、变更和订阅的接口
- GraphQL 联合接口
- GraphQL 类型的 POJO 类
- 每个 GraphQL 枚举的枚举类
根据您的设置/首选项(例如 gradle 与 maven),有多种选项:
我建议您查看第一个选项,因为它看起来有很好的文档记录,并且在生成所需的帮助程序后还提供了完全的灵活性:
graphql-java-generator 生成样板代码,并让您专注于特定于您的用例的内容。然后,运行代码不依赖于 graphql-java-generator 的任何依赖项。所以你可以随时摆脱 graphql-java-generator:只需将生成的代码放在你的 SCM 中,就是这样。
在客户端模式下,您只需一行代码即可查询服务器。
例如 :
Human human = queryType.human("{id name appearsIn homePlanet friends{name}}", "180");在这种模式下,插件生成:
Query 对象的一个 java 类,Mutation 对象的一个 java 类(如果有),GraphQL 对象的每个标准对象一个 POJO,所有必要的运行时实际上作为源代码附加到您的项目中:生成的代码是立场-独自的。因此,您的项目在运行时不依赖于来自 graphql-java-generator 的任何外部依赖项。
| 归档时间: |
|
| 查看次数: |
1426 次 |
| 最近记录: |