GraphQL 是一种用于 API 的查询语言,它提供了一种更加高效、强大且灵活的方式来访问和操作数据。Deno 是一个现代的、安全且可靠的 JavaScript/TypeScript 运行时环境,它提供了一种新的方式来构建 Web 应用程序。在本文中,我们将介绍如何在 Deno 中使用 GraphQL 来实现数据查询。
安装依赖
首先,我们需要安装一些必要的依赖。在 Deno 中,我们可以使用 import
语句来导入外部模块。在本文中,我们将使用以下依赖:
https://deno.land/x/oak/mod.ts
:一个基于中间件的 Web 框架。https://deno.land/x/deno_graphql/mod.ts
:一个用于在 Deno 中实现 GraphQL 的库。
你可以使用以下命令来安装这些依赖:
deno install --allow-net --allow-read --unstable https://deno.land/x/oak/mod.ts deno install --allow-net --allow-read --unstable https://deno.land/x/deno_graphql/mod.ts
在上面的命令中,我们使用了 --allow-net
参数来允许应用程序访问网络,使用了 --allow-read
参数来允许应用程序读取文件,使用了 --unstable
参数来启用实验性功能。
创建 GraphQL Schema
接下来,我们将创建一个 GraphQL Schema,它定义了数据模型和查询方式。在本文中,我们将使用以下数据模型:
interface Book { id: string; title: string; author: string; }
我们将创建一个 Query
类型,它包含一个 books
字段,该字段返回 Book
类型的数组。我们将使用 buildSchema
函数来创建 Schema:
-- -------------------- ---- ------- ------ - ----------- - ---- ------------------------------------------ ----- ------ - ------------- ---- ---- - --- ------- ------ ------- ------- ------- - ---- ----- - ------ ------- - ---
在上面的代码中,我们使用了 GraphQL 的类型系统来定义了 Book
和 Query
类型。books
字段返回一个 Book
类型的数组。
实现数据源
接下来,我们需要实现一个数据源,它提供了 books
数据。在本文中,我们将使用一个简单的数组来存储数据:
const books: Book[] = [ { id: "1", title: "The Great Gatsby", author: "F. Scott Fitzgerald" }, { id: "2", title: "To Kill a Mockingbird", author: "Harper Lee" }, { id: "3", title: "1984", author: "George Orwell" }, ];
我们将创建一个 root
对象,它包含一个名为 books
的字段,该字段返回 books
数组:
const root = { books: () => books, };
在上面的代码中,我们使用了一个简单的箭头函数来返回 books
数组。
创建服务器
接下来,我们将创建一个服务器,它将运行在本地的 8080
端口上。在本文中,我们将使用 oak
来创建服务器:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ----- --- - --- -------------- ------------- ----- -- - ----- ------ - ----- --------- ------- ---------- ----- ------- ------------------- --- ----------------- - ------- --- ------------------- ------- -- ------------------------ ----- ------------ ----- ---- ---
在上面的代码中,我们使用了 graphql
函数来处理 GraphQL 查询。我们将 schema
和 root
对象传递给 graphql
函数,它将返回查询结果。我们将该结果设置为响应体,以便客户端可以获取它。
发送查询请求
现在,我们已经准备好了服务器。我们可以使用任何支持 GraphQL 的客户端来发送查询请求。在本文中,我们将使用 curl
命令来发送查询请求:
curl -X POST \ -H "Content-Type: application/json" \ --data '{ "query": "{ books { id, title, author } }" }' \ http://localhost:8080/graphql
在上面的命令中,我们使用了 -X
参数来指定 HTTP 方法为 POST
,使用了 -H
参数来指定请求头的 Content-Type
为 application/json
,使用了 --data
参数来指定查询语句,使用了请求的 URL。
结论
在本文中,我们介绍了如何在 Deno 中使用 GraphQL 来实现数据查询。我们创建了一个 GraphQL Schema,实现了一个简单的数据源,并创建了一个服务器。我们还演示了如何使用 curl
命令来发送查询请求。GraphQL 提供了一种更加高效、强大且灵活的方式来访问和操作数据。借助 Deno 和 GraphQL,我们可以更加轻松地构建 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675ff35a03c3aa6a56faf61e