我们正在开始一个新的全堆栈项目。我们已经决定,我们将使用React作为前端,它应该使用GraphQL API。
我们正在考虑开发此API的两种方案:
每种情况的优缺点是什么?一个比另一个好吗?
发布于 2018-09-01 20:16:41
根据我们对gitter的讨论,
由于您正在从头构建平台,因此不需要通过REST构建您的GraphQL层。这将是双倍的工作,是不必要的。我建议您设置阿波罗服务器,它将直接与数据库交互。
您曾经说过,您可能需要使用一些我推荐的易于使用graphql的Microservices的遗留API。
关于PRISMA,它没有给你太多的灵活性。它还不允许对字段(如值的增量或递减)进行符合ACID的更新。github上的这个问题可用于跟踪此功能的更新。
PRISMA可以让你快速地建立起来,但是我(个人的观点)认为它没有那么灵活。
最后一个问题是如何在没有REST的情况下查询数据库/数据库,我建议直接从您的服务器进行查询。
GraphQL是客户端,阿波罗将帮助您扩展它并提供更多的功能。在创建REST时,除了不需要为每个请求定义单独的端点这一事实之外,您不需要做与创建REST时非常不同的事情。除了只返回/查询所需的数据之外,数据库交互几乎保持不变,这可以动态地完成。来自graphql网站
将一个GraphQL查询发送到您的API中,并得到您所需要的内容,没有更多的也没有更少的。GraphQL查询总是返回可预测的结果。使用GraphQL的应用程序速度快且稳定,因为它们控制获取的数据,而不是服务器。
其他提及:AWS Appsync
发布于 2018-09-06 11:31:45
第二种情况是最好的
第二种方法是构建一个GraphQL API,它使用数据库作为数据源,跳过REST。
REST和GraphQL都可以通过HTTP操作,尽管GraphQL与协议无关。GraphQL是这一领域的新成员,它具有许多很酷的特性,它解决了大多数REST所面临的问题,比如:
1.)获取数据的多个端点
In rest we have create multiple API endpoints2.)超过/正在抓取
Some time API return extra data that we don't need or less data in response3.)网络请求
multiple endpoint leads to more network requests 4.)错误处理
REST中的错误处理非常简单,我们只需检查HTTP头以获得响应状态。根据我们得到的HTTP状态代码( 404、503、500等),我们可以很容易地知道错误是什么,以及如何解决它。另一方面,当通过GraphQL操作时,我们将始终获得200 OK响应状态。当处理GraphQL查询时发生错误时,将向客户端发送带有响应的完整错误消息。
5.)版本化
通常,当使用第三方REST时,我们会看到一些东西,如v1、v2、v3等等,它们只是表明我们正在使用的REST版本。这会导致代码冗余和可维护性降低。使用GraphQL,不需要版本控制,因为我们可以轻松地向GraphQL API添加新的字段和类型,而不会影响现有查询。此外,我们可以很容易地将字段标记为不推荐的字段,并且这些字段将被排除在从服务器获得的响应之外。
如需详细比较,请访问GraphQl与Rest
发布于 2018-08-29 01:23:29
使用REST为您的GraphQL供电就像使用a为您的Tesla供电一样。简直是哑巴!!使用数据库,但只选择GraphQL查询询问的字段和记录,而不是"select *“。如果需要速度,可以使用Redis缓存。
https://stackoverflow.com/questions/52049251
复制相似问题