OASGraph 是什么?
首先(请注意)
我是一个对GraphQL刚开始学习的初学者,上周来到这里才开始学习。在写这篇文章之前,我本来是打算先去实践并深入理解GraphQL的,这是合理的做法。然而,我也认为速度很重要,同时以并行方式加深对它的理解也是一种方式,所以我尝试通过阅读和写作的方式来总结关于OASGraph的内容,并以我的浅显理解展示出来。请允许其中可能存在的错误、误解和理解不深的部分,并理解这只是我个人的观点。如果有错误,请留下评论以示指正。我计划另外整理已经尝试过的内容,并计划此文章纯为文字形式。
强力环路(StrongLoop)公布的OASGraph
根据StrongLoop的发布信和我的理解,以下内容也被发布在ProgrammbaleWeb这个每天被许多API从业人员关注的网站上。
StrongLoop(现在属于IBM)在2018/9/24发布的软件包中,似乎是用TypeScript实现的。
据说它可以将基于OpenAPI规范(OAS)编写的API转换为GraphQL接口。它适用于现有的REST风格的API,可以为其创建GraphQL的封装器,以便利用现有的REST API资产。
API管理产品API Connect和框架LoopBack都是以REST API为基础的,但近年来也一直在与日益流行的数据中心化GraphQL保持并行发展,目的是使开发人员能够使用更新而高效的API设计。
尽管GraphQL引起了广泛关注,许多企业仍然以REST API为基础。作为StrongLoop/IBM,他们采取的立场是REST API和GraphQL共存,并将REST API作为GraphQL的后端功能。实际上,在GraphQL的研讨会上,也认为GraphQL无法完全替代REST API(至少目前如此),所以在不同情况下选择和共存使用是一种共识,我想。
根据这样的背景,他们开发了一个名为OASGraph的工具,它可以从OAS·Swagger格式自动生成GraphQL模式。对于REST API的请求和响应模型,他们创建了解析器以调用实际的REST API,并生成GraphQL响应。我打算在参考文献中尝试运行一些入门指南等来深入理解这个工具。
我认为这种库的存在已经有几年了,但它通过提供认证机制、满足GraphQL需求的合法化和非法化功能等方面的特点进行差异化。对于这些方面,首先需要深入了解GraphQL本身,以便更好地理解内容,所以我将继续学习相关知识。
認証メカニズム
セキュアなエンドポイントをviewerにラップしてAPI keyやクレデンシャルをinputとして使うようです。
サニタイズ
GraphQLと互換性のない部分を自動サニタイズするそうです。例えばREST API側で、-, ., ,, :, ;といったGraphQLでサポートされない文字がパラメータやデータ定義に入っていたら除去。
GraphQLのqueryからREST APIを正しく呼び出すためにデサニタイズし、レスポンスをGrapshQLに準拠した結果を返すために再サニタイズする、といったことを行うようです。
另外,使用OASGraph工具来处理API Guru上注册的符合OAS规范的API似乎取得了大致的成功。由于需要完全符合OAS规范才能正常运作,所以如果要利用现有的REST API资源来使用OASGraph,首先需要重新审视这里的定义,这是一种预感。
总结。
在刚开始学习GraphQL的阶段,我还无法准确描述OASGraph的好处。但是我计划在学习GraphQL的同时,不断加深对OASGraph的理解。
请提供参考文献。
-
- https://strongloop.com/strongblog/announcing-oasgraph/
-
- https://v4.loopback.io/oasgraph.html
-
- https://github.com/strongloop/oasgraph
-
- https://www.npmjs.com/package/oasgraph
- https://www.programmableweb.com/news/ibmstrongloop-announces-graphql-wrapper-rest-apis-oasgraph/brief/2018/10/01