一步步教你实现 GraphQL 服务器
GraphQL 是一个用于构建 API 的查询语言和运行时,其强大的数据查询和灵活性,已经在前端领域得到了广泛的应用。今天我们将从头开始构建一个 GraphQL 服务器,具体实现过程如下:
- 安装依赖
首先,我们需要使用 Node.js 来创建我们的 GraphQL 服务器。通过运行以下命令在您的项目文件夹中安装所需的依赖项:
npm install express graphql express-graphql
解释一下上述依赖包的作用:
- express 是一个流行的 Node.js 框架,用于快速构建 Web 应用程序。
- graphql 是一个 JavaScript 实现的 GraphQL,用于处理 GraphQL 查询和类型定义。
- express-graphql 是一个用于连接 GraphQL 和 Express 的中间件。
- 创建数据模型
在我们开始创建 GraphQL 服务器之前,需要有一个数据模型,表示我们将存储和提取数据的方式。我们将创建一个名为 users 的简单数据模型。下面是这个数据模型的代码:
const users = [ {id: 1, name: 'Alice', age: 28}, {id: 2, name: 'Bob', age: 32}, {id: 3, name: 'Charlie', age: 25}, ];
该代码将三个用户添加到 users 数组中,每个用户都有 id、name 和 age 属性。
- 创建类型定义
接下来,我们需要创建类型定义。类型定义告诉 GraphQL 服务器你要提取什么数据,以及它应该如何查询这些数据。我们将在类型定义中创建一个名为 User 的对象类型,以便可以在 GraphQL 中查询用户数据。以下是该类型定义的代码:
-- -------------------- ---- ------- ----- ------------------- ----------- -------------- ------------ -------------- - ------------------- ----- -------- - --- ------------------- ----- ------- ------- - --- ------ ------------ ----- ------ --------------- ---- ------ ------------ -- ---
该代码创建名为 UserType 的 GraphQLObjectType,该类型具有三个字段:id、name、age。每个字段都具有自己的类型。
- 创建查询定义
现在,我们需要定义查询操作。在我们的示例中,我们将创建一个名为 users 的根查询,以便可以查询 users 数据模型中的所有用户。以下是查询定义的代码:
-- -------------------- ---- ------- ----- ------------- - --- ------------------- ----- -------- ------- - ------ - ----- --- ---------------------- -------- -- -- ------ -- -- ---
该代码创建 GraphQLObjectType,类型名称为 Query,具有一个名为 users 的 fields 对象。users 对象返回一个列表类型的 UserType,并使用 resolve 函数返回我们的 users 数据模型。
- 创建 GraphQL Schema
现在,我们将创建一个 GraphQL Schema,该 Schema 将使用我们的类型定义和查询定义。以下是我们创建的代码:
const schema = new GraphQLSchema({ query: RootQueryType, });
该代码将我们的根查询对象(RootQueryType)作为参数传递给了 GraphQLSchema 构造函数,以便我们可以将它们一起使用。
- 创建 Express 应用程序
现在,我们将使用 Express 框架创建一个应用程序。所需的步骤如下:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------------- - --------------------------- ----- --- - ---------- ------------------- ------------- ------- ------- --------- ----- ---- ----------------- -------------------- - ------- --- ------ -- --------------------------------
该代码使用 express() 函数创建 Express 应用程序实例。接下来,我们使用 graphqlHTTP 中间件将 /graphql 路径与 GraphQL Schema(schema)进行关联。我们还启用了 graphiql,它是一个用于测试和调试的 GraphiQL IDE。最后,我们通过设置一个端口来启动应用程序,并在控制台输出成功消息。
- 测试 GraphQL 服务器
现在我们已经创建了 GraphQL 服务器,首先我们可以在浏览器中访问 http://localhost:4000/graphql,这将打开 GraphiQL IDE。在 GraphiQL 命令行中输入以下代码:
query { users { id name age } }
点击运行按钮,即可看到如下的返回结果:
-- -------------------- ---- ------- - ------- - -------- - - ----- -- ------- -------- ------ -- -- - ----- -- ------- ------ ------ -- -- - ----- -- ------- ---------- ------ -- - - - -
恭喜,您已成功创建了自己的 GraphQL 服务器!
总结
在这篇文章中,我们一步步地创建了一个 GraphQL 服务器,让您能够更好地理解 GraphQL 并在您的应用程序中使用它。我们安装了必要的依赖项,创建了一个数据模型,定义了 GraphQL Schema 和 Type,并使用 Express 应用程序在本地运行了它。同时我们还使用了 GraphiQL IDE 测试了 GraphQL 服务器,并成功地返回了数据。希望这篇文章能够对正在学习 GraphQL 的开发者起到一些帮助作用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645aea4f968c7c53b0d34a29