GraphQL是一种查询语言和运行时,可以让客户端指定需要的数据,从而避免了传统REST API中经常遇到的“过度获取”和“欠获取”的问题。使用GraphQL可以更好地控制请求和响应数据的负载,提高API性能和可维护性。
在本文中,我们将介绍如何使用npm包express-graphql来构建一个基本的GraphQL服务器,并通过示例代码演示其用法。
步骤1:创建项目并安装依赖项
首先,我们需要创建一个新的Node.js项目。在命令行中执行以下命令:
mkdir graphql-server cd graphql-server npm init -y
接下来,我们需要安装所需的依赖项。打开命令行并执行以下命令:
npm install express express-graphql graphql --save
这将安装Express框架、express-graphql和GraphQL库。
步骤2:编写GraphQL模式和解析器
接下来,我们需要编写GraphQL Schema和解析器,以便客户端可以查询数据。我们将创建一个简单的books列表,其中每本书都有标题和作者属性。
在项目根目录下创建一个名为schema.js
的文件,并添加以下内容:
-- -------------------- ---- ------- ----- - ------------------ -------------- ------------ ------------- - - ------------------- -- -------- ----- -------- - --- ------------------- ----- ------- ------- -- -- -- ------ - ----- ------------- -- ------- - ----- ------------- - -- --- -- ----- ----- --------- - --- ------------------- ----- ---------------- ------- - ------ - ----- --- ---------------------- --------- - ------ - - ------ ------ ------ --- --- -------------- ------- ------- ----- -------- -- - ------ ---- -------- ------- ------- -------- -- - ------ --- ---- - ------------- ------- ------- ---- - -- - - - --- -------------- - --- --------------- ------ --------- ---
这个文件定义了两个GraphQL对象类型:Book和RootQuery。我们在RootQuery中定义了一个books字段,它返回一个包含三本书的数组。
接下来,在项目根目录下创建一个名为resolver.js
的文件,并添加以下内容:
const { books } = require('./data'); module.exports = { Query: { books: () => books, }, };
这个文件包含了一个名为Query的对象,其中包含了books解析器函数。这个函数返回一个包含所有书籍的数组。
步骤3:创建Express服务器并将GraphQL绑定到路由
现在我们已经编写了GraphQL Schema和解析器,我们需要将其绑定到一个Express服务器上。在项目根目录下创建一个名为server.js
的文件,并添加以下内容:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------- - --------------------------- ----- ------ - -------------------- ----- --------- - ---------------------- ----- --- - ---------- ------------------- ------------- ------- ---------- ---------- --------- ---- ---- ---------------- -- -- - -------------------- ------ ------- -- -------------------------------- ---
这个文件创建了一个Express服务器,并将express-graphql中间件绑定到路由“/graphql”上。中间件接受一个包含GraphQL Schema和解析器的选项对象。
步骤4:测试GraphQL服务器
现在我们已经完成了所有的设置,让我们测试一下我们的GraphQL服务器。运行以下命令启动服务器:
node server.js
然后,在浏览器中打开http://localhost:4000/graphql
,您将看到GraphQL Playground界面。在左侧边栏中输入以下查询:
{ books { > 来源:[JavaScript中文网](https://www.javascriptcn.com/post/52742) ,转载请注明来源 [https://www.javascriptcn.com/post/52742](https://www.javascriptcn.com/post/52742)