GraphQL 是一种用于 API 的查询语言,它是由 Facebook 开发的。GraphQL 可以让前端开发人员更好地控制数据,减少网络请求的数量,提高应用程序的性能。Node.js 是一个运行在服务器端的 JavaScript 运行时环境,它可以让我们使用 JavaScript 编写服务器端代码。在本文中,我们将介绍如何使用 GraphQL 和 Node.js 构建现代 Web 应用程序。
安装和配置
首先,我们需要安装 Node.js。您可以在 Node.js 官方网站 上下载最新版本的 Node.js。安装完成后,您可以在终端中运行以下命令来检查 Node.js 是否已成功安装:
node -v
接下来,我们需要安装 GraphQL。您可以在终端中运行以下命令来安装 GraphQL:
npm install graphql
我们还需要安装一个用于创建 GraphQL API 的 Node.js 框架。在本文中,我们将使用 Apollo Server。您可以在终端中运行以下命令来安装 Apollo Server:
npm install apollo-server
编写代码
我们将创建一个简单的电影列表应用程序。我们将使用 GraphQL 和 Node.js 来实现以下功能:
- 获取电影列表
- 添加电影
- 删除电影
定义数据模型
我们首先需要定义电影数据模型。在本文中,我们将使用 MongoDB 作为数据库,因此我们需要安装 MongoDB。您可以在 MongoDB 官方网站 上下载最新版本的 MongoDB。
我们创建一个名为 Movie
的数据模型,该模型包含电影的标题、导演和评级。在终端中运行以下命令来安装 Mongoose,它是一个用于在 Node.js 中使用 MongoDB 的对象模型工具:
npm install mongoose
接下来,我们创建一个名为 models/Movie.js
的文件,并定义 Movie
数据模型:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ----------- - --- ----------------- ------ - ----- ------- --------- ----- -- --------- - ----- ------- --------- ----- -- ------- - ----- ------- --------- ----- -- --- -------------- - ----------------------- -------------
创建 GraphQL API
我们使用 Apollo Server 来创建 GraphQL API。在终端中创建一个名为 index.js
的文件,并添加以下代码:
-- -------------------- ---- ------- ----- - ------------- --- - - ------------------------- ----- -------- - -------------------- ----- ----- - -------------------------- ----- -------- - ---- ---- ----- - --- --- ------ ------- --------- ------- ------- ---- - ---- ----- - ------- --------- - ---- -------- - --------------- -------- --------- -------- ------- ------ ------ --------------- ----- ------ - -- ----- --------- - - ------ - ------- ----- -- -- - ------ ----- ------------- -- -- --------- - --------- ----- --- - ------ --------- ------ -- -- - ----- ----- - --- ------- ------ --------- ------- --- ----- ------------- ------ ------ -- ------------ ----- --- - -- -- -- - ------ ----- ---------------------------- -- -- -- ----- ------ - --- -------------- --------- --------- --- -------- -------------------------------------- - ---------------- ----- ------------------- ----- -- -------- -- - -------------------- ------------ ----------------------- --- -- -- - ------------------- ------- -- --------- --- -- ------------ -- - ----------------- ---
在上面的代码中,我们定义了 Movie
对象类型,它包含电影的标题、导演和评级。我们还定义了 Query
和 Mutation
对象类型,它们分别用于获取电影列表和添加/删除电影。
我们使用 mongoose
来连接 MongoDB 数据库,并在 resolvers
中实现了 Query
和 Mutation
的逻辑。在 server
中,我们将 typeDefs
和 resolvers
传递给 ApolloServer
,并启动服务器。
测试 API
我们现在可以使用 GraphQL Playground 来测试我们的 API。在浏览器中打开 http://localhost:4000
,您将看到 GraphQL Playground。在 Playground 的左侧,您可以编写 GraphQL 查询和变异。在右侧,您可以看到查询的结果。
我们可以使用以下查询来获取电影列表:
query { movies { id title director rating } }
我们可以使用以下变异来添加电影:
mutation { addMovie(title: "The Shawshank Redemption", director: "Frank Darabont", rating: 9) { id title director rating } }
我们可以使用以下变异来删除电影:
mutation { deleteMovie(id: "5f3c7d3b3e8d6c3f6c2f6c2d") { id title director rating } }
结论
在本文中,我们介绍了如何使用 GraphQL 和 Node.js 构建现代 Web 应用程序。我们使用 Apollo Server 来创建 GraphQL API,并使用 Mongoose 来连接 MongoDB 数据库。我们实现了获取电影列表、添加电影和删除电影的功能。GraphQL 可以让我们更好地控制数据,减少网络请求的数量,提高应用程序的性能。Node.js 可以让我们使用 JavaScript 编写服务器端代码。这些技术都是现代 Web 开发中必不可少的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676afa7278388e33bb1ec459