前言
在现代化的网站开发中,前端和后端分离已成为一个非常流行的趋势,由此而生的 GraphQL 技术相比于 RESTful API 更为灵活,在前后端分离的应用场景下更为适用。而 @apollo/server 则是一个开源的 GraphQL 服务器,它能够快速构建起您的 GraphQL API。
本文就为您带来 @apollo/server 在前端应用中使用的教程,让您快速上手这个强大的 npm 包。
什么是 @apollo/server
@apollo/server 是一个开源的 GraphQL 服务器,它能够快速搭建起一个 GraphQL API 服务。它通过插件机制提供了多种功能,包括缓存、限制查询深度和复杂度、身份验证、错误处理等等。
在 @apollo/server 中,每个 GraphQL 请求都是通过一个 Resolver 来处理的。Resolver 接收参数并返回一个值,这个返回值会被当做 GraphQL 查询的结果进行输出。而这个参数和返回值的过程便是 GraphQL 服务器的核心。
@apollo/server 安装及使用
首先,您需要在您的项目中安装 @apollo/server。
npm install --save apollo-server
在使用 @apollo/server 之前,您需要创建一个用于处理请求的 GraphQL Schema。这个 Schema 告知 @apollo/server 有哪些类型和字段可供查询,以及如何查询这些数据。
在接下来的示例中,我们将构建一个简单的电影列表,包含以下几个字段:
- title
- releaseDate
- director
- actors
- 创建 Schema
这里我们将以最简单的方式来创建一个 GraphQL Schema,定义电影列表的类型及字段。
-- -------------------- ---- ------- ----- - --- - - ------------------------ ----- -------- - ---- ---- ----- - ------ ------ ------------ ------ --------- ------ ------- -------- - ---- ----- - ------- ------- - -
定义好的 Schema 放在 typeDefs 对象中,其中定义了一个 Movie 的类型以及 movies 的查询字段,这个查询字段返回一个 Movie 类型的数组。
- 创建 Resolvers
在 Resolver 中实现查询逻辑,当我们查询电影列表时,会从数据库中提取电影信息并返回电影列表。此时,我们先将电影信息写死,然后返回它。
-- -------------------- ---- ------- ----- --------- - - ------ - ------- -- -- - - ------ ---- --------- ------------ ------------ ------- --------- ------ ---------- ------- ----- --------- ------- --------- ---- -------- -- - ------ ---- ----------- ------------ ------- --------- -------- ---- --------- ------- -------- -------- --- -------- ------ ------ - - - -
Resolver 是一个返回查询结果的函数。在这个 resolver 中,当收到查询请求时,它将返回一个包含 movie 信息的数组。
- 启动服务器
有了 Schema 和 Resolver,我们就可以启动服务器来处理请求了。以下是一个简单的服务器示例:
-- -------------------- ---- ------- ----- - ------------ - - ------------------------ ----- ------ - --- -------------- --------- --------- -- ----------------------- --- -- -- - --------------- ------ ----- -- -------- --
现在我们已经完成了一个完整的 GraphQL API 服务器。
- 测试
在命令行中运行以下命令启动服务器:
node index.js
然后,您可以在浏览器中尝试发出查询请求:
query GetMovies { movies { title releaseDate director actors } }
当结果返回时,您应该会看到电影的详细信息。
结论
总的来说,@apollo/server 是一个非常强大和灵活的 npm 包,它能够快速搭建起一个 GraphQL API 服务器。在本文中,我们介绍了 @apollo/server 的一些基本概念和用法,让您可以快速上手并开始开发自己的 GraphQL API。
如果您想深入了解更多关于 @apollo/server 的高级用法,请查阅官方文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/109146