将Express与GraphQL一起使用而不是简单地将Node.js与GraphtQL一起使用有什么好处?

时间:2019-07-07 02:54:37

标签: node.js express graphql graphql-js

将Express与GraphQL一起使用有什么好处? GraphQL的所有优点也可以与不带Express的简单Node.js应用程序一起使用。由于GraphQL仅具有一个端点,而没有像Express这样的中间件概念,为什么我们要使用Express而不仅仅是Node.js?

1 个答案:

答案 0 :(得分:0)

  1. Express使用Node.js http模块under the hood,但通过中间件提供了一种为端点实现各种功能的方法。例如,要处理POST请求(需要对GraphQL进行处理),则需要将请求正文解析为可用的格式-如果您不使用Express和body-parser之类的中间件,则需要必须手工完成。您可能需要的other common functionality也是如此,例如CORS,会话管理等。为什么要使用中间件来重新发明轮子呢?

  2. GraphQL本身可能没有中间件的概念(尽管 是一个有效does just that的库),但Express的中间件仍然适用于整个GraphQL端点。这意味着您可以设置在GraphQL终结点之前 运行的中间件。除了上面已经描述的功能之外,这还为您分配了为端点实施授权逻辑的机会。例如,您可以阻止无法提供适当的自定义标头的用户访问整个端点。

  3. 实际上,您的应用可能需要的不仅仅是GraphQL端点。身份验证通常在GraphQL之外通过公开一个或多个其他终结点来处理-如果为您的应用实现OAuth flow,则尤其如此。同样,您可以与利用Webhook的第三方服务交互,这将要求您专门为此目的在服务器上公开其他终结点。健康检查通常也是如此,就像负载平衡器使用的检查一样。