前言
Web 开发的核心就是构建 API,API 构建的质量决定了更高层级的应用质量。随着框架和技术的发展,很多新的构建方式和协议已经涌现出来。
在本文中,我们将使用 Express.js 和 GraphQL 构建 API。Express.js 是一个流行的 Node.js Web 框架,而 GraphQL 则是一个用于 API 的查询语言和运行时环境。它们可以帮助我们构建更快、更简单、更可靠的 API。
Express.js
Express.js 是一个基于 Node.js 平台的 Web 框架。它提供了一个简单而灵活的 API,让我们能够快速地构建 Web 应用程序。
以下是一个使用 Express.js 构建简单 API 的示例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ------------ ----- ---- -- - --------------- --------- --- ---------------- -- -- - -------------------- --- --------- -- ---- -------- ---展开代码
在上面的代码中,我们使用 express
模块创建了一个 Express 应用程序。我们在根路径上定义了一个 GET 路由,当请求根路径时,该路由将发送一个 “Hello World!” 的响应。最后,我们将应用程序的端口设置为 3000 并监听该端口。
使用这种方式,我们可以快速地构建一个功能简单的 API。但是在开发更为复杂的应用程序时,我们需要更多的功能。
Express 提供了更多高级功能,包括:
- Middleware
- 路由
- 静态文件服务
- 模板引擎
在这篇文章中,我们将重点介绍如何使用 Express 和 GraphQL 构建 API。
GraphQL
GraphQL 是一个用于 API 的查询语言和运行时环境。通过 GraphQL,我们可以使用一种声明性语言来定义查询,与数据源通信,并返回所需的数据。
GraphQL 的一个主要特点是让客户端可以查询精确的数据,并且只返回客户端所需的数据。这可以有效减轻服务器的负担和带宽压力。
以下是一个使用 GraphQL 构建 API 的示例:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - ----------- - - ------------------- -- -- ------ ----- ------ - ------------- ---- ----- - ------ ------ - --- -- -- -------- ----- ---- - - ------ -- -- - ------ ------ -------- -- -- ----- --- - ---------- -- -- ------- --- -------- ----------- ------------- ------- ---------- ----- --------- ----- -- -- ---------------- -- -- - -------------------- --- --------- -- ---- -------- ---展开代码
在上面的代码中,我们使用 graphqlHTTP
中间件将 GraphQL 与 Express 应用程序集成在一起。我们定义了一个 Query
类型,该类型有一个名为 hello
的字段。我们还提供了一个名为 root
的解析器,用于实现 hello
字段的逻辑。
最后,我们将 GraphQL 中间件添加到 Express 应用程序中,将其路由到 /graphql
路径,并启用 GraphiQL 调试工具。
在 Express 中使用 GraphQL
现在我们已经了解了如何使用 Express 和 GraphQL 分别构建一个简单的 API,接下来我们将介绍如何将它们结合起来使用。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - ----------- - - ------------------- ----- ------ - ------------- ---- ----- - ------ ------ -------------- --------- ------ - --- ----- ---- - - ------ -- -- - ------ ------ -------- -- --------- -- ---- -- -- - ------ ------- ---------- -- -- ----- --- - ---------- -------- ----------- ------------- ------- ---------- ----- --------- ----- -- -- ---------------- -- -- - -------------------- --- --------- -- ---- -------- ---展开代码
在上面的代码中,我们在定义 Query
类型中添加了一个 greeting
字段,该字段带有一个 name
参数。我们还在 root
解析器中实现了一个 greeting
函数,用于根据传递的 name
参数返回一个字符串。
我们还需要重点关注一下 graphqlHTTP
中间件的配置。我们传递了一个 schema
对象和一个 root
对象。在 graphiql
选项中设置为 true
,表示启用 GraphiQL 调试工具。
现在我们可以访问 http://localhost:3000/graphql
,使用 GraphiQL 发送请求并接收响应了,下面是一个示例:
query HelloWorld { hello } query Greeting { greeting(name: "John") }
GraphiQL 将发送这两个查询并在右侧的“响应”窗格中返回结果。
结论
Express.js 和 GraphQL 都是用于构建 Web 应用程序的常用工具。通过将它们相互结合使用,我们可以轻松地构建高效和灵活的 API。
在本文中,我们提供了一个简单的示例,演示了如何在 Express 中使用 GraphQL。但是,如果你继续学习,并实现更多高级功能,你可以创建一个真正灵活、高效的 API。
希望这篇文章对你有所帮助,如有任何疑问或建议,请在下方留言。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6710a8eb377015f5a1a1fc9b