中文

为 REST(类)API 生成 GraphQL 封装器

软件工程 2018-09-25 v1

摘要

GraphQL 是一种查询语言及基于其之上的范式,用于实现客户端-服务器交互的 Web 应用程序编程接口(API)。使用 GraphQL,客户端在类型化查询中定义精确的嵌套数据需求,由服务器针对(可能的多个)后端系统(如数据库、对象存储或其他 API)解析。客户端在单次请求中仅接收其关心的数据。然而,现有 REST(类)API 的提供者需要实现额外的 GraphQL 接口以启用这些优势。我们在此评估为现有 REST(类)API 自动生成 GraphQL 封装器的可行性。封装器在接收到 GraphQL 查询时,将其翻译为针对目标 API 的请求。我们讨论了创建此类封装器的挑战,包括处理数据清洗、认证或嵌套查询。我们进一步给出了 OASGraph 的原型实现。OASGraph 以描述现有 REST(类)Web API 的 OpenAPI 规范(OAS)作为输入,并为其生成 GraphQL 封装器。我们通过将 OASGraph 及一个现有开源替代方案运行于 959 个公开可用的 OAS 上来评估 OASGraph。该实验表明 OASGraph 优于现有替代方案,并能够为 89.5% 的 API 创建 GraphQL 封装器——但在许多情况下存在局限。随后对 OASGraph 产生的错误与警告的分析表明,所评估 OAS 中缺失或模糊的信息阻碍了完整封装器的创建。最后,我们给出了 IBM Watson 语言翻译器 API 的用例,表明对 OAS 的微小更改可使 OASGraph 生成更地道且更具表现力的 GraphQL 封装器。

关键词

引用

@article{arxiv.1809.08319,
  title  = {Generating GraphQL-Wrappers for REST(-like) APIs},
  author = {Erik Wittern and Alan Cha and Jim A. Laredo},
  journal= {arXiv preprint arXiv:1809.08319},
  year   = {2018}
}

备注

Originally published at 18th International Conference on Web Engineering (ICWE '18)