使用 GraphQL 封装 REST API / 仅使用 GraphQL

Posted

技术标签:

【中文标题】使用 GraphQL 封装 REST API / 仅使用 GraphQL【英文标题】:Wrapping REST API with GraphQL / just using GraphQL 【发布时间】:2020-01-21 19:51:28 【问题描述】:

我正在开展一个项目,我将把 GraphQL 集成到后端 Express 服务器。目前,服务器的结构很像MVC模式结构。

控制器文件夹

mysql 数据库中查询数据并将其返回的函数。 例如:文件名为Car.js,其中有getAllCars()getCar(id)等函数

路由器文件夹

调用控制器中的函数并将其返回给调用者的端点 例如:端点 GET /cars 将调用 getAllCars() 并返回它

我想在此之上包装 GraphQL,并想知道最好的方法是什么。据我所知,每个 GraphQL 类型都有字段和解析器,而解析器是获取数据的那个(如果我错了,请纠正我)。

所以我想我的问题是......

    如果我想在此上包装 GraphQL,在解析器中,我是否调用将获取数据的端点? 如果我有一个控制器文件夹已经在处理数据库中的数据访问/修改,我可以简单地调用解析器中的控制器函数,而不必“需要任何端点”吗?

我希望这是有道理的,我对 GraphQL 还是很陌生,很高兴能使用它。

谢谢!

【问题讨论】:

【参考方案1】:

请在下面找到我的答案

如果我想在此上包装 GraphQL,在解析器中,我是否调用将获取数据的端点?

应始终从单个端点提供 GraphQL。更改的是查询,但终点始终相同。

如果我有一个控制器文件夹,它已经在处理数据库中的数据访问/修改,我可以简单地调用解析器中的控制器函数,而不一定“需要任何端点”吗?

这是有争议的。始终将控制器外部的数据访问/修改处理分离出来是一个很好的做法,就像在服务层中一样。

【讨论】:

以上是关于使用 GraphQL 封装 REST API / 仅使用 GraphQL的主要内容,如果未能解决你的问题,请参考以下文章

harbor rest api 转graphql api

使用 Amazon api 网关用 REST API 包装 graphQL(appsync)

在 REST API 中使用 GraphQL 进行数据查询

streamsets rest api 转换 graphql

sofa graphql 2 rest api 试用

使用 Apollo React 用 GraphQL 包装 REST api