GraphQL是Facebook开发的一种用于API查询语言和运行时环境的开源规范。它可以使得客户端只能获取需要的数据而不需要进行多余的请求。本文将介绍如何使用Express.js构建GraphQL服务器,包括从初始步骤到最难的深层探究,同时提供一些示例代码,帮助读者更好地理解。
现代JavaScript开发环境
在开始使用Express.js之前,我们需要准备好现代的JavaScript开发环境。因此,我们建议使用Node.js运行时和npm作为包管理器。在这里,我们提供Node.js和npm的官方链接以及安装命令:
- Node.js安装:https://nodejs.org/en/
- npm安装:https://www.npmjs.com/
安装好Node.js和npm之后,我们可以开始使用Express.js构建GraphQL服务器了。
安装Express.js
在使用Express.js之前,我们需要安装它。可以使用以下命令安装它:
npm install express graphql express-graphql
这将安装三个npm包,分别是:Express、GraphQL和Express-GraphQL。Express用于创建Web应用程序,GraphQL用于创建GraphQL服务器,而Express-GraphQL是Express框架的中间件,用于将GraphQL与Express应用程序相集成。
创建Express应用程序
在安装Express.js之后,我们现在可以创建我们的Express服务器应用程序了。我们可以使用Express应用程序生成器,也可以手动创建Express应用程序。在这里,我们用手动创建的方式介绍,可以使用下列命令创建一个新的Express应用程序:
mkdir my-graphql-server cd my-graphql-server npm init -y npm install express
这将创建一个新的文件夹my-graphql-server
,并在其中创建一个新的package.json
文件和一个node_modules
目录,然后安装Express.js。
创建GraphQL服务器
创建GraphQL服务器需要以下步骤:
- 创建GraphQL schema
- 创建Express-GraphQL中间件
- 将Express服务器与中间件集成
创建GraphQL schema
GraphQL schema是定义GraphQL API的基本要素。它描述了所有可用查询,以及所有可用数据类型。在本例中,我们将定义一些基本的查询和数据类型。
在my-graphql-server
文件夹中,创建一个新文件schema.js
,定义GraphQL schema。以下是一个示例schema:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- ------ - ------------- ------ ---- ---- ----- - ----------- ----- ---- --------- ------ - ---- ---- - --- --- ----- ------- ------ ------- -------- ------ ---------- ----- - --- -------------- - -------
在上面的代码中,我们首先定义了Date
标量类型,然后定义了两个查询类型,包括一个获取单个用户的查询和一个获取所有用户的查询。最后,定义了User
类型,表示User对象,包括其ID,名称,电子邮件地址以及朋友列表和创建时间。
创建Express-GraphQL中间件
在my-graphql-server
文件夹中,创建一个新文件server.js
,定义一个GraphQL中间件,并将其添加到Express应用程序。以下是一个示例中间件:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - -------------------- ----- --- - ---------- ------------------- ------------- ------- ------- --------- ---- ---- ---------------- -- -- - -------------------- ------ ------- -- -------------------------------- ---
在上面的代码中,我们创建了一个Express服务器,并将GraphQL中间件添加到其路径/graphql
。在中间件的配置中,我们将GraphQL schema传递到中间件,并开启了GraphQL的交互式IDE(GraphiQL)。最后,我们将Express服务器监听在端口3000上。
将Express服务器与中间件集成
在my-graphql-server
文件夹中,创建一个新文件index.js
,将Express应用程序与GraphQL中间件集成。以下是一个示例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - -------------------- ----- --- - ---------- ------------------- ------------- ------- ------- --------- ---- ---- ---------------- -- -- - -------------------- ------ ------- -- -------------------------------- ---
在上面的代码中,我们创建了一个Express服务器,并将GraphQL中间件添加到其路径/graphql
。在中间件的配置中,我们将GraphQL schema传递到中间件,并开启了GraphQL的交互式IDE(GraphiQL)。最后,我们将Express服务器监听在端口3000上。
在GraphQL服务器中查询数据
现在,我们已经创建了GraphQL服务器,可以通过GraphiQL交互式IDE来查询数据。在浏览器中打开http://localhost:3000/graphql
以进入GraphiQL。
在GraphiQL中,我们可以输入查询语句并获取与查询匹配的数据。例如,以下查询会返回所有用户的列表:
query { getUsers { id name email } }
同样,以下查询将返回特定用户的详细信息(替换{id}为实际用户ID):
-- -------------------- ---- ------- ----- - ----------- ----- - -- ---- ----- ------- - -- ---- - --------- - -
结论
在本文中,我们探讨了使用Express.js构建GraphQL服务器的全过程,并提供了详细步骤和示例代码。希望本文对大家学习和使用GraphQL有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67307d6feedcc8a97c920e55