GraphQL 是一种用于API开发的查询语言和运行时环境。它提供了一种更高效、更强大和更灵活的API设计方式,能够更好地满足客户端应用程序的需求。Apollo Server 是一种用于构建 GraphQL API 的强大工具,让开发人员可以更轻松地构建快速、稳健的API。本文将介绍如何使用 Apollo Server 和 SQL 数据库构建简单的 GraphQL API。
安装和配置 Apollo Server
本文使用 Node.js 平台开发并运行 GraphQL API。因此,首先需要安装 Node.js 和 npm 包管理器。安装完成后,在控制台运行以下命令来快速创建一个新的 Node.js 项目:
npm init -y
接下来,在命令行中安装以下依赖项:
npm install apollo-server graphql pg
其中 apollo-server
是构建 GraphQL API 的必要依赖项,graphql
是一个 JavaScript 实现的 GraphQL 类型和查询语言,pg
是一种用于连接 PostgreSQL 数据库的 Node.js 库。
接下来,创建一个名为 index.js
的新文件,并添加以下代码:
-- -------------------- ---- ------- ----- - ------------- --- - - ------------------------- ----- -------- - ---- ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ -- -- ------- ------- - -- ----- ------ - --- -------------- --------- --------- --- ----------------------- --- -- -- - ------------------- ----- -- --------- ---
在上面的代码中,我们首先导入了 Apollo Server 和 gql 函数,然后定义了一个包含一个查询字段的 GraphQL schema。该查询字段返回字符串“Hello, World!”。最后,我们创建了一个新的 Apollo Server 实例,并将其启动并监听在本地的默认端口。
接下来,在终端中运行以下命令启动应用程序:
node index.js
这将启动 Apollo Server 并在浏览器中提供一个 GraphQL Playground,让您可以测试和查询 API。要在 Playground 中测试 hello
查询字段,请使用以下查询:
query { hello }
这将返回一个字符串“Hello, World!”。
现在,我们已经成功使用 Apollo Server 创建了一个简单的 GraphQL API。接下来,我们将了解如何将 SQL 数据库集成到我们的 API 中。
集成 SQL 数据库
在本教程中,我们选择使用 PostgreSQL 数据库,但您可以选择适合您工作需求的任何 SQL 数据库。
我们利用 pg
包连接到 PostgreSQL 数据库。要做到这一点,需要在系统中安装 PostgreSQL,并为 Apollo Server 构建一系列简单的查询以连接和读取数据。
下面是一些示例代码,它通过 SQL 查询从 PostgreSQL 数据库中读取或操作数据,并将其返回给客户端。
-- -------------------- ---- ------- ----- - ------------- --- - - ------------------------- ----- - ---- - - -------------- ----- ---- - --- ------ ----- ----------- ----- ------------ --------- ------------- --------- ------------- ----- ----- --- ----- -------- - ---- ---- ----- - --------- ------ --------------- ----- ---- - ---- -------- - ------------- -------- ------ -------- --------- --------- ----- - ---- ---- - --- --- ----- ------- ------ ------- --------- ------- - -- ----- --------- - - ------ - --------- ----- -- -- - ----- ------ - ----- --------------- ----- ------ - ----- -------------------- - ---- -------- ----------------- ------ ------------ -- ------------ ----- -------- ----- -------- ----- -- - ----- ------ - ----- --------------- ----- ------ - ----- -------------------- - ---- ----- ----- -- - --------------- ----------------- ------ --------------- - -- --------- - -------- ----- -------- ----- -------- ----- -- - ----- ------ - ----- --------------- ----- ------ - ----- -------------- ------ ---- ----- ------ ------ --------- ------ ---------------- ---------------- ------------------- --------- - --- ----------------- ------ --------------- - - -- ----- ------ - --- -------------- --------- --------- --- ----------------------- --- -- -- - ------------------- ----- -- --------- ---
在上面的示例中,我们创建了三个 schema。一个 Query
类型,包含两个查询:getUsers
和 getUserById
。 Mutation
类型,包含一个修改操作 addUser
。此外,我们定义一个 User
类型,其中包含用户模型的字段。
我们创建了一个 Pool
的实例,它是 pg
包的一部分,我们使用它来管理与数据库的连接。
在查询字段中,我们使用 async/await
和 pool.connect()
方法,与 PostgreSQL 数据库建立连接,并执行查询(如获取用户列表或根据用户的 ID 获取单个用户)。
在 Mutation
字段中,我们编写了一个 SQL 语句,该语句向数据库中添加一个新用户。我们使用上述技术通过 client.query()
方法来实现这一点。该方法返回一个 Promise,并且我们在 async/await
语法中使用它,以避免在结果返回之前返回响应。添加新用户后,我们将使用 client.release()
关闭与数据库的连接。这有助于释放客户端连接而不是耗尽它们。
当进行操作时,应该永远不要忘记自己的数据库应该是有用户名和密码的。
结论
本文介绍了如何使用 Apollo Server 和 SQL 数据库构建 GraphQL API。我们提供了一些示例代码,以解释如何使用 PostgreSQL 和 pg
包从数据库中查找、读取和操作数据。通过学习本文,您可以根据自己的需求,更好地理解如何使用 Apollo Server 构建具有查询和修改功能的 GraphQL API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67301e7feedcc8a97c911e4d