GraphQL 是一种跨平台的查询语言,它建立在强类型系统上,可以帮助开发人员快速构建功能强大的 API。Deno 是一个新兴的 JavaScript 运行时,它通过内置的安全性和一组有用的功能来提高开发人员的生产力。在本文中,我们将探讨如何使用 Deno 实现 GraphQL 服务。
首先,安装 Deno
如果您还没有安装 Deno,可以在 Deno 官方网站 上下载适用于您操作系统的安装包。
安装依赖库
我们将使用一些依赖库来帮助我们实现 GraphQL 服务。您可以在终端中使用以下命令来安装这些依赖库。
deno install --allow-net --allow-read https://deno.land/x/denodb/cli.ts deno install --allow-net https://deno.land/x/oak/mod.ts deno install --allow-read https://deno.land/x/denoenv/denoenv.ts deno install --allow-net --allow-read --allow-env https://deno.land/x/dotenv/mod.ts
这些依赖库包括 Oak、Denodb 和 dotenv。Oak 是一个 Web 框架,Denodb 是一个轻量级的关系数据库 ORM,而 dotenv 可以从 .env 文件中读取环境变量。
创建 GraphQL API
现在,我们可以开始创建我们的 GraphQL API 了。在首先,我们需要在终端中使用以下命令来初始化 Deno 项目:
deno init graphql-server
然后,我们将在项目的根目录中创建一个 server.ts 文件,并开始将我们的 API 配置好。在 server.ts 文件中,我们将首先导入必要的依赖库。
import { Application, Router } from "https://deno.land/x/oak/mod.ts"; import { Database, DataTypes, Model } from "https://deno.land/x/denodb/mod.ts"; import "https://deno.land/x/dotenv/load.ts";
接下来,我们需要配置我们的数据库连接。首先,我们将定义一个 Todo 模型,用作我们的示例数据。
-- -------------------- ---- ------- ----- ---- ------- ----- - ------ ----- - -------- ------ ---------- - ----- ------ ------ - - --- - ----- ------------------ ----------- ----- -------------- ----- -- ------ ----------------- ---------- ------------------ -- -
我们还需要定义一个初始化数据库连接的函数,以便在 API 启动时连接到数据库。
-- -------------------- ---- ------- ----- -------- -------- - ----- -- - --- ------------------- - --------- -------------- --- ---------------- ----- ---------- -
我们将在 API 的初始化函数中调用 initDb() 函数,以确保我们的 API 启动时已连接到数据库。
-- -------------------- ---- ------- ----- --- - --- -------------- ------------------------------ -- ---- -- -- - -------------------- ------ ------- -- --------------------------- --- ----- --------- ----- ------------ ----- ---- ---
现在,我们可以将 GraphQL API 与我们 的 Oak 应用程序集成。我们将使用 GraphQL.js 构建 GraphQL API,我们可以从 deno.land/x/deno_graphql 下载它。
deno install -A -f -n graphql https://deno.land/x/deno_graphql/server.ts
接下来,我们可以开始编写我们的 GraphQL API。我们将创建一个 TodoList 的 GraphQL 类型,它将是一个包含 Todo 的列表的对象。
-- -------------------- ---- ------- ----- -------- - - ---- ---- - --- --- ------ ------- ---------- -------- - ---- -------- - ------ -------- - ---- ----- - --------- --------- - --
我们需要为每个新类型定义一个解析器。在我们的情况下,我们的解析器将是从数据库中检索数据的函数。
-- -------------------- ---- ------- ----- --------- - - ------ - --------- ----- -- -- - ------ - ------ ----- ---------- -- -- -- -- ----- ------ - --- --------------- --------- --------- ---
最后,我们需要将我们的 GraphQL API 附加到我们的 Oak 应用程序中。我们将使用路由器来指定我们的 API 路径,然后我们将使用 use() 方法将 GraphQL API 附加到 express 应用程序。最终的 server.ts 文件应包括以下内容:
-- -------------------- ---- ------- ------ - ------------- - ---- --------------------------------------------- ------ - ------------ ------ - ---- --------------------------------- ------ - --------- ---------- ----- - ---- ------------------------------------ ------ ------------------------------------- ----- ---- ------- ----- - ------ ----- - -------- ------ ---------- - ----- ------ ------ - - --- - ----- ------------------ ----------- ----- -------------- ----- -- ------ ----------------- ---------- ------------------ -- - ----- -------- -------- - ----- -- - --- ------------------- - --------- -------------- --- ---------------- ----- ---------- - ----- --- - --- -------------- ----- ------ - --- --------- ----- -------- - - ---- ---- - --- --- ------ ------- ---------- -------- - ---- -------- - ------ -------- - ---- ----- - --------- --------- - -- ----- --------- - - ------ - --------- ----- -- -- - ------ - ------ ----- ---------- -- -- -- -- ----- ------ - --- --------------- --------- --------- --- ----- --------- ---------------------- ----- --------- -- - ----- ----------- - -------------------------------------------- -- ------------ -- ----------------------------------------- - ----- - ----- ------ - - ----- ------------------------------------------ -- -------- - ----------------------- - ---- --------------------- - - ------ -- -------------------- ------- - --------------------- - ----- ------------------ ------- - ----------------------- - ---- --------------------- - - -------- ---- -------- -- --- ------------------------- --------------------------------- ------------------------------ -- ---- -- -- - -------------------- ------ ------- -- ----------------------------------- --- ----- ------------ ----- ---- ---
总结
在本文中,我们探讨了如何使用 Deno 在 Oak 框架中构建 GraphQL API。我们看到,Denodb 和 dotenv 这些依赖库可以使我们更容易地连接到数据库和读取环境变量。借助 GraphQL.js,我们可以使用更直观的方式定义 API 的模式,并在需要时查找数据。这个简单的例子是如何在 Deno 中构建 GraphQL API 的入门指南,您可以通过扩展查询和模式来扩展此 API,以适应您的应用程序需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6654fba3d3423812e497887c