GraphQL 是一种用于 API 的查询语言,它允许客户端定义自己需要的数据,从而解决了 REST API 中出现的问题。Deno 是一个新兴的运行时环境,它支持 TypeScript,并且具有安全性、简单性和快速启动的特点。在本文中,我们将学习如何使用 Deno 构建 GraphQL 服务端,并创建一个示例应用程序。
什么是 GraphQL?
GraphQL 由 Facebook 开发,它是一种查询语言和运行时环境,用于构建 Web 应用程序中的 API。GraphQL 的一个关键特点是客户端可以完全控制所请求的数据,而不是使用 RESTful API 中的固定集合。它还支持更快的开发周期和更容易的版本控制。GraphQL API 可以用多种语言构建,包括 JavaScript、Java、Python、Ruby 等。
Deno 是什么?
Deno 是一个新兴的 JavaScript 和 TypeScript 运行时环境,它已经在开发人员中变得越来越流行。它由 Node.js 的原始作者 Ryan Dahl 开发,并融合了 TypeScript 和 Rust 等新技术。与 Node.js 不同,Deno 提供了安全性、自包含性和依赖项管理的优势。
在 Deno 中构建 GraphQL 服务端非常简单。我们需要安装一个名为 dalgard/graphql
的第三方模块,并编写一些代码。
步骤 1:安装依赖项
我们首先需要安装 dalgard/graphql
模块,它是一个完全用 TypeScript 写成的 GraphQL 服务器。在命令行中运行以下命令:
deno install --allow-read --allow-net main.ts
这将创建 main.ts
文件并安装所需的依赖项。
步骤 2:创建 GraphQL 服务器
我们现在需要创建一个 GraphQL 服务器。在 main.ts
文件中,我们添加以下代码:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ - ------------- --- - ---- ------------------------------------- ----- --- - --- -------------- ----- -------- - ---- ---- ---- - --- --- ----- ------- - ---- ----- - ----------- ----- ----- - ---- -------- - ------------- --------- ----- - -- ----- --------- - - ------ - -------- -------- ---- - -- -- ---- -------- ---- ----- ---- -- - -- ---- -- --- ---- -- -- -- -- --------- - -------- -------- ---- - ---- -- ---- -------- ---- ----- ---- -- - -- ---- -- --- ---- ---- ---- -- -- -- ----- -------------- - ----- -------------- --------- ---------- --- -------------------------------- --------------------------------- ----- ------------ ----- ---- ---
在这个代码块中,我们使用 Deno 的 Oak 框架创建了一个 HTTP 服务器,然后定义了 GraphQL 的 schema。这个 schema 定义了我们的 server 将拥有哪些 Query 和 Mutation。然后,我们编写了两个 resolvers 函数,一个用于获取用户,另一个用于添加新用户。最后,我们使用 applyGraphQL
函数来启动 GraphQL 服务器。
步骤 3:运行服务器
我们现在可以使用命令来启动服务器:
deno run --allow-read --allow-net main.ts
现在我们可以使用浏览器来访问 http://localhost:8000/graphql
并测试我们的服务器。
总结
本文中,我们学习了如何使用 Deno 构建 GraphQL 服务器,并创建了一个简单的示例应用程序。使用 Deno 构建 GraphQL 服务器需要编写比传统的 REST API 更少的代码,且更方便于开发和维护。我们希望本文能够帮助您快速了解 Deno 和 GraphQL,以便在项目中使用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648f085648841e9894d6694a