GraphQL 是一种新的 Web API 查询语言,它的目标是用更少的数据传输完成复杂的数据库查询操作。Deno 是一种新的运行时环境,它专为 JavaScript 和 TypeScript 设计,它解决了 Node.js 中存在的一些问题,例如模块管理、安全性等。
在本文中,我们将讨论如何在 Deno 中使用 GraphQL 构建 API。
安装和配置 Deno
Deno 可以通过以下命令进行安装:
curl -fsSL https://deno.land/x/install/install.sh | sh
安装完成后,我们还需要设置环境变量:
export DENO_INSTALL="/Users/user/.deno" export PATH="$DENO_INSTALL/bin:$PATH"
安装和配置 GraphQL
首先,我们需要安装以下依赖项:
import { Application, Router } from "https://deno.land/x/oak/mod.ts"; import { applyGraphQL } from "https://deno.land/x/oak_graphql/mod.ts"; import { makeExecutableSchema } from "https://cdn.pika.dev/graphql-tools/v6"; import "https://deno.land/x/dotenv/load.ts";
这里,我们使用 Oak 框架作为 Web 服务器,使用 oak_graphql 库来支持 GraphQL 查询。我们还使用 graphql-tools 来创建 GraphQL 模式,以及 dotenv 库来管理环境变量。
现在,我们需要配置 GraphQL 以便可以使用它来构建 API:
-- -------------------- ---- ------- ----- -------- - - ---- ------ - --- ---- ----- ------- ---- ---- - ---- ----- - ------------- ------ ------ - ---- -------- - --------------- -------- ---- ------ ------ - -- ----- --------- - - ------ - ---------- --------- - -- -- -- - -- --------- --- ------ ------- - -- --------- - ---------- --------- - ----- --- -- -- - -- --------- --- ------ ------- - -- -- ----- ------ - ---------------------- --------- ---------- ---
我们首先定义了我们的 GraphQL 模式,其中包含两个类型:Person 和 Query,以及一个 mutation 类型。Person 类型表示一个人,Query 类型表示从数据库中获取指定 ID 的人,mutation 类型表示往数据库中添加一条人的信息。我们还定义了 resolvers,用于处理相应的逻辑。最后,我们使用 makeExecutableSchema 方法创建了一个 GraphQL 模式。
集成到 Oak
现在我们需要使用 oak-graphql 将 GraphQL 添加到 Oak 应用程序中:
-- -------------------- ---- ------- ----- --- - --- -------------- ----- -------------- - ----- -------------- ----- ----------- --------- ---------- --- -------------------------------- --------------------------------- ------------ ----- ---- ---
首先,我们创建了一个 Oak 应用程序。然后,我们使用 applyGraphQL 方法来创建 GraphQL 服务,并将其路由和方法添加到应用程序中。最后,我们启动服务器。
测试
我们可以使用 GraphiQL 来测试我们的 API。
http://localhost:8080/graphql
在 GraphiQL 中,我们可以通过类似以下的查询获取数据:
query { getPerson(id: 1) { id name age } }
我们也可以使用类似以下的 mutation 来添加一条记录:
mutation { addPerson(name: "Tony", age: 30) { id name age } }
总结
在本文中,我们介绍了如何使用 Deno 和 GraphQL 构建 API。我们首先安装和配置了 Deno,然后安装和配置了 GraphQL。然后,我们将 GraphQL 集成到 Oak 应用程序中,最后通过 GraphiQL 与 API 进行交互。
GraphQL 提供了一种简洁而强大的途径来构建 API,而 Deno 则可以提供更好的安全性和模块管理。这两者结合起来,可以提供更强大、更可靠的 Web API 服务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ef4bb6f6b2d6eab394d15d