tog*_*afu 3 api backend node.js express graphql
我知道这是一个非常初学者的问题,但当涉及到 MERN 堆栈和 GraphQL 时,我很难掌握一些事情。github上有这个特定的项目其中的 Web 应用程序是使用 MongoDB、Express、React 和 Nodejs 以及 GraphQL 开发的。
我确实知道 MongoDB 用于数据存储,React 用于前端,但我无法理解为什么使用 Express 和 Nodejs,如果使用 GraphQL 创建 API,直接向 / 从 GraphQL 创建 POST 和 GET 数据。 MongoDB 数据库?Nodejs、express、graphql之间的作用和互连是什么?
这个问题对您来说可能没有意义,因为我缺少 Web 应用程序开发的基本概念知识和对 MERN 等 Web 开发堆栈的理解。
Node.js 是一个 JavaScript 运行时环境——它实际上执行所有服务器端代码。Express 是一个框架,提供在 Node.js 中开发 Web 应用程序的基本功能。虽然 Node.js 已经能够侦听端口上的请求,但 Express 通过消除样板文件并提供用于创建端点的更简单的 API,使设置 Web 服务器变得更简单。
GraphQL 是一种查询语言。GraphQL.js 是 GraphQL 的 JavaScript 实现。两者都无法创建端点或 Web 服务器。GraphQL 本身不会监听对特定端口发出的请求。这就是我们使用 Express 的目的——与另一个库(如apollo-server-expressor )结合express-graphql,Express 设置我们的端点,侦听端点的传入请求,解析它们并将它们交给 GraphQL 来执行。然后它将执行结果发送回发出请求的客户端。
同样,GraphQL.js 无法直接与数据库交互。GraphQL 只是执行您为响应请求而提供的代码。与数据库的实际交互通常是通过驱动程序(如mongodb)或 ORM(如mongoose)完成的。
因此,客户端(例如 React 应用程序)向 Express 应用程序发出请求,Express 应用程序解析请求并将其交给 GraphQL,GraphQL 执行您的查询,并在此过程中调用一些代码,然后从数据库获取数据。该数据被格式化为正确的响应并发送回客户端。
对于初学者,您引用的缺少的项目详细信息如下:
Node.js创建 API 生成或运行代码的环境。GraphQL 无法单独完成此任务。Express主体解析中间件、身份验证中间件(它将对每个 GraphQL 请求进行身份验证)以及express-graphqlGraphQL 与 Express 框架的集成(意味着在身份验证中间件的 next() 函数触发后将调用 graphQL API 函数)。GraphQL创建 auth 中间件之后需要的 API 将调用 next() 函数。所以该项目的工作方式如下:
bodyParserauth中间件调用。