前言
DataWorks 数据服务提供便捷的操作即可提供大数据 API,现在支持导出更完整的 API 文档 (基于 Open API v3),除了能导入到三方插件 (Postman、VSCode、Swagger、Redoc、IntelliJ IDEA 等),还能转成 GraphQL,本文将介绍如何将 DataWorks 数据服务 API 提供到 GraphQL 服务上。
第一步
首先先建立一个数据源并准备好数据,这边我们使用 Hologres 为例,并透过 HoloWeb 建立表与数据。
第一张表为 user 表:
第二张表为 salary 表:
第二步
到 DataWorks 管理中心添加此 Hologres 数据源,打开 DataWorks 数据服务建立两个 API。
第一个为查 User 的 API:
第二个为查 Salary 的 API:
将两个 API 测试提交并上线,于 API 管理页面将两个 API 导出文档。
这边我们勾上导出 APP Code,方便简化使用 GraphQL,到此我们就拿到导出的 API 文档 JSON。
第三步
安装 openapi-to-graphql-cli NPM 包。
注: open-api-to-graphql-cli 新版已移到 @graphql-mesh/cli 下,使用方式类似,可参考此文章。
npm i -g openapi-to-graphql-cli
透过 openapi-to-graphql 指令将 API 文档转译并启动 GraphQL 服务。
openapi-to-graphql ~/Downloads/Export_Open_API_V3_xxx.json
打开http://localhost:3000/graphsql,开始使用 GraphQL。下图为透过一个 id 参数得到两个 API 的返回结果,可自行组织字段结构,类型定义都可以在右侧查看。
下图为动图:
点击界面上的 Prettify 按钮,即可于浏览器上取得带 GraphQL Query 的 URL,直接请求 URL 也可拿到结果。
将此步骤内容部署到阿里云函数计算,就能提供前端方便的 GraphQL 服务,如使用 Relay 或 Apollo 用户端来连接 GraphQL 服务。
小结
DataWorks 数据服务透出 API 文档除方便开发者本地查阅线上 API 的规格外,还可透过基于业界标准将 API 文档转化成 GraphQL 服务,让大数据 API 有更多元的方式被业务使用。