使用 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Amazon api 网关用 REST API 包装 graphQL(appsync)