前言
在现代 Web 应用程序开发中,API 是一个至关重要的组成部分。API 可以让客户端和服务器之间进行通信,从而实现数据交互和应用程序的功能。在构建 API 时,很多开发者都会选择使用 Koa 和 GraphQL 这两个工具来实现。Koa 是一个基于 Node.js 的 Web 框架,而 GraphQL 是一种用于 API 的查询语言和运行时环境。本文将介绍如何使用 Koa 和 GraphQL 来构建 API。
安装 Koa 和 GraphQL
在开始之前,我们需要确保已经安装了 Node.js 和 npm。在命令行中输入以下命令来安装 Koa 和 GraphQL:
npm install koa graphql koa-graphql
创建 Koa 应用程序
我们将从创建一个简单的 Koa 应用程序开始。在项目的根目录下创建一个名为 app.js
的文件,输入以下代码:
const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);
这段代码创建了一个 Koa 应用程序,并监听端口 3000。当访问 http://localhost:3000
时,服务器将返回 "Hello World"。
使用 GraphQL
现在我们将添加 GraphQL 到我们的应用程序中。首先,我们需要在 app.js
文件中引入 koa-graphql
模块:
const graphqlHTTP = require('koa-graphql');
接下来,我们需要定义一个 GraphQL schema。在项目的根目录下创建一个名为 schema.js
的文件,输入以下代码:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ------ ------ - --- -------------- - -------展开代码
这段代码定义了一个简单的 GraphQL schema,其中包含一个查询类型,该类型具有一个名为 hello
的字段,该字段返回一个字符串。
现在我们需要将 GraphQL middleware 添加到我们的应用程序中。在 app.js
文件中添加以下代码:
const schema = require('./schema'); app.use( graphqlHTTP({ schema: schema, graphiql: true, }), );
这段代码将 graphqlHTTP
middleware 添加到我们的应用程序中,并将 schema
作为参数传递给它。graphiql
选项设置为 true
,这将启用 GraphiQL,一个用于测试和调试 GraphQL API 的 Web 界面。
现在我们可以重新启动应用程序,并尝试访问 http://localhost:3000/graphql
。这将打开 GraphiQL 界面。在左侧的查询窗口中输入以下查询:
{ hello }
然后单击运行按钮。您应该会在右侧的结果窗口中看到以下结果:
{ "data": { "hello": "Hello world!" } }
添加更多的查询和变异
现在我们已经成功地添加了 GraphQL 到我们的应用程序中,并创建了一个简单的查询。接下来,让我们添加更多的查询和变异。
在 schema.js
文件中添加以下代码:
-- -------------------- ---- ------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ------ ------ -------------- ------ ------- ------ -------------- ----- - ---- -------- - ------------------- -------- ------ - --- --- ------- - ------ -------- ----- ---- - - ------ -- -- ------ -------- -------------- -- -- ------------- - --- - ----- -- ----- - ---------- ---- -------- ------- -- -- -------------- -------------- -- -- --- -- -------- -- ------------------------ - -- - --- ----------- -- ------- -- -- - ------- - -------- ------ -------- -- -- -------------- - - ------- ---- --展开代码
这段代码定义了一个包含更多查询和变异的 GraphQL schema。我们添加了一个返回随机字符串的 quoteOfTheDay
查询,一个返回随机浮点数的 random
查询,一个返回三个骰子点数的数组的 rollThreeDice
查询,以及一个设置消息变量的 setMessage
变异。
现在我们需要更新 app.js
文件,以便使用新的 schema 和 root 对象:
-- -------------------- ---- ------- ----- - ------- ---- - - -------------------- -------- ------------- ------- ------- ---------- ----- --------- ----- --- --展开代码
现在我们可以重新启动应用程序,并尝试在 GraphiQL 中运行以下查询和变异:
-- -------------------- ---- ------- - ----- ------------- ------ ------------- - -------- - ------------------- ------ ---------- -展开代码
您应该会在右侧的结果窗口中看到以下结果:
-- -------------------- ---- ------- - ------- - -------- ------ -------- ---------------- ----- -- ------ --------- ------------------- ---------------- --- -- -- - - - ------- - ------------- ------ --------- - -展开代码
结论
在本文中,我们介绍了如何使用 Koa 和 GraphQL 来构建 API。我们从创建一个简单的 Koa 应用程序开始,然后添加了 GraphQL middleware 和一个简单的 GraphQL schema。接着我们添加了更多的查询和变异,以便更好地演示 GraphQL 的功能。我们希望本文能够帮助您更好地理解如何使用 Koa 和 GraphQL 构建 API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676cc85a82fcee791c60b0dc