GraphQL 是一个用于 API 设计的查询语言,它使得客户端可以精确地指定它需要哪些数据,从而提高了 API 的效率和可扩展性。本文将介绍如何用 50 行代码实现一个基本的 GraphQL API。
安装依赖
我们将使用 Node.js 和 Express.js 来创建服务器,并使用 graphql、express-graphql 和 faker 这三个包来实现 GraphQL API。先通过 npm 进行安装。
npm install express graphql express-graphql faker
创建模型
首先,我们需要定义我们的模型。在这个例子中,我们将创建一个 User 对象,它有 id、name 和 email 三个属性。
-- -------------------- ---- ------- ----- - ------------------ -------------- ----------- -------------- ------------ - - ------------------- ----- ----- - ----------------- ----- --------- - --- ------------------- ----- ------- ------- -- -- -- --- - ----- ---------- -- ----- - ----- ------------- -- ------ - ----- ------------- -- --- ---
创建查询
接下来,我们需要定义我们的查询。我们将使用 GraphQL 的 query 和 mutation 来定义我们的查询和修改操作。
在这个例子中,我们将创建三个查询:getAllUsers、getUserById 和 getUserByName。getAllUsers 将返回所有用户,getUserById 将根据 id 返回指定的用户,getUserByName 将根据 name 返回指定的用户。
-- -------------------- ---- ------- ----- --------- - --- ------------------- ----- ---------------- ------- - ------------ - ----- --- ----------------------- -------- ------ ----- -- - ------ ------------ ------- -- -- --- -- -- -- --- -- ----- ----------------------- ------ ----------------------- ---- -- -- ------------ - ----- ---------- ----- - --- - ----- ---------- -- -- -------- ------ - -- -- -- - ------ - --- ----- ----------------------- ------ ----------------------- -- -- -- -------------- - ----- --- ----------------------- ----- - ----- - ----- ------------- -- -- -------- ------ - ---- -- -- - ------ ------------ ------- - -- --- -- -- -- --- -- ----- ------ ----------------------- ---- -- -- -- ---
创建修改
除了查询,我们还需要定义我们的修改。在这个例子中,我们将定义一个 addUser mutation,它将接收一个 name 和 email 参数,并添加一个新的用户到我们的用户列表中。
-- -------------------- ---- ------- ----- -------- - --- ------------------- ----- ----------- ------- - -------- - ----- ---------- ----- - ----- - ----- ------------- -- ------ - ----- ------------- -- -- -------- ------ - ----- ----- -- -- - ----- -- - ------------------------ - ------ ------ - --- ----- ----- -- -- -- -- ---
创建 Schema
在创建完我们的模型、查询和修改之后,我们需要将它们组合成一个 Schema。我们将使用 GraphQLSchema 来完成这个工作。
const schema = new GraphQLSchema({ query: RootQuery, mutation, });
创建服务器
最后,我们将使用 Express.js 创建一个服务器,我们将在服务器中定义我们的 GraphQL API。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- --- - ---------- -------- ----------- ------------- ------- --------- ----- -- -- ----- ---- - ---------------- -- ----- ---------------- -- -- ------------------- ------- -- ---- -----------
测试
我们已经完成了我们的 GraphQL API,接下来我们可以使用 GraphiQL 工具来测试它。
GraphiQL 是一个交互式的查询开发环境,它可以帮助我们自动生成查询和变更的语法,并自动填写必需的参数和字段。
在浏览器中打开 http://localhost:4000/graphql,就可以看到 GraphiQL 工具了。我们可以在左侧的输入框中输入我们的查询或变更,右侧的窗口将显示我们的结果。例如,我们可以尝试输入下面的查询:
{ getAllUsers { id name email } }
这个查询将返回我们所有的用户,包括 id、name 和 email 三个属性。
总结
在本文中,我们介绍了如何使用 Node.js、Express.js、GraphQL 和 faker 实现一个基本的 GraphQL API。我们定义了我们的模型、查询和变更,并将它们组合成一个 Schema,在 Express.js 应用程序中使用 graphqlHTTP 中间件,就可以实现我们的 GraphQL API。这个例子只是一个起点,我们可以根据我们的需求进一步扩展我们的 API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645cc02b968c7c53b0f336b6