前言
GraphQL 是一种用于 API 查询的语言,它由 Facebook 创建并开源。与传统的 REST API 相比,GraphQL 具有更高的灵活性和可扩展性,它可以让客户端发起更精准的请求,只获取需要的数据。
在本文中,我们将介绍如何在 Deno 中使用 GraphQL 实现 API 查询。我们将使用 Oak 作为 HTTP 服务器,并使用 graphql-deno 库来实现 GraphQL API。
环境准备
在开始之前,您需要在本地安装 Deno。您可以从以下链接中下载并安装 Deno:
另外,您需要安装以下依赖库:
- Oak:用于创建 HTTP 服务器。
- graphql-deno:用于实现 GraphQL API。
您可以使用以下命令来安装这些依赖库:
deno install --allow-net --allow-env --allow-read https://deno.land/x/oak/mod.ts deno install --allow-net --allow-env --allow-read https://deno.land/x/graphql_deno/mod.ts
创建 GraphQL API
让我们首先创建一个 GraphQL API。我们将创建一个用于查询 GitHub 用户的 API。API 将使用 GitHub GraphQL API 来获取用户信息。
在项目根目录中创建一个名为 schema.graphql
的文件。在该文件中定义以下 GraphQL Schema:
-- -------------------- ---- ------- ---- ---- - --- --- ------ ------- ----- ------ ------ ------ - ---- ----- - -------------- --------- ---- -
接下来,在项目根目录中创建一个名为 resolvers.ts
的文件。在该文件中定义以下 Resolvers:
-- -------------------- ---- ------- ------ - ------------------ - ---- ------------------------------------------ ------ - ----- - ---- ----------------------------------- --------- ---- - --- ------- ------ ------- ------ ------- ------- ------- - ----- --------- - - ------ - ----- ----- --- ---- - -------- -- - --------- ------ -- -------- ---- ----- ------------------- -- - ----- -------- - ----- --------------------------------------- - ------- ------- -------- - --------------- ------------------- -------------- ------- -------------------------------- -- ----- ---------------- ------ - ----- - ----------- -------------- - -- ----- ---- ----- - - - -- --- ----- ---- - ----- ---------------- -- ---------------- --- ---- - ----- --- ------------------------------ - ----- ----- ---- - - --- ------------------ ------ --------------------- ----- -------------------- ------ -------------------- -- ------ ----- - - -- ------ ------- ----------
在以上代码中,我们使用了 fetch
函数来发起向 GitHub GraphQL API 的查询请求。我们还使用了环境变量 GITHUB_TOKEN
来进行身份验证。您需要在环境变量中设置一个名为 GITHUB_TOKEN
的变量,变量值为您的 GitHub 个人访问令牌。
定义 HTTP 服务器
现在,我们需要定义一个 HTTP 服务器,用于处理对 GraphQL API 的查询请求。我们将使用 Oak 库来创建 HTTP 服务器。
在项目根目录中创建一个名为 server.ts
的文件。在该文件中定义以下代码:
-- -------------------- ---- ------- ------ - ------------ ------ - ---- --------------------------------- ------ - ------------ - ---- ------------------------------------------ ------ - ------------- - ---- --------------------------------------------- ------ --------- ---- ----------------- ----- --- - --- -------------- ----- ------ - --- --------- ----- ------ - --- --------------- ------ --- -------- --------------- --- ----- -------------- - ----- -------------- ------- ------- ----- ----------- --------- ------------------- ---------- ---------- -------- ----- ---- -- --- --- ------------------------- -------------------------------- --------------------------------- ------------------- -------- ------------------------ ----- ------------ ----- ---- ---
在以上代码中,我们首先创建了一个 Application
和一个 Router
对象。接下来,我们定义了一个 GraphQL Schema,并使用 applyGraphQL
函数将其与 HTTP 服务器绑定在一起。我们还将路由设置为 /graphql
。
最后,我们使用 Oak 的 router.routes()
函数来将 GraphQL API 与 HTTP 服务器绑定在一起,以便客户端可以通过 HTTP 请求访问 GraphQL API。
运行应用程序
我们已经完成了 GraphQL API 和 HTTP 服务器的实现。现在,我们可以启动应用程序:
deno run --allow-net --allow-env --allow-read server.ts
启动应用程序后,您可以在浏览器中访问 http://localhost:8080/graphql
来测试您的 API。
使用 GraphQL Playground
GraphQL Playground 是一个交互式的 GraphQL 查询工具。它可以让您轻松地测试您的 GraphQL API。在 Deno 中,您可以使用 oak-graphql 库来启用 GraphQL Playground。
在项目根目录中创建一个名为 playground.ts
的文件。在该文件中定义以下内容:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ - ------------ - ---- ------------------------------------------ ------ - ----------------- - ---- ------------------------------------------------ ------ - ------------- - ---- --------------------------------------------- ------ --------- ---- ----------------- ----- --- - --- -------------- ----- ------ - --- --------------- ------ --- -------- --------------- --- ----- -------------- - ----- -------------- ----- ----------- --------- ------------------- ---------- ---------- -------- ----- ---- -- --- --- ------------- ----- -- - ----- ------------------- --------- ---------- -------- --- -------------------- ----------- ------------------------ ----- ------------ ----- ---- ---
以上代码中,我们定义了一个 Application
对象,并使用 applyGraphQL
函数将 GraphQL API 与 HTTP 服务器绑定在一起。接下来,我们创建了一个新的路由,与 HTTP 服务器绑定,在该路由上向客户端提供 GraphQL Playground。最后,我们启动 HTTP 服务器,让客户端可以通过浏览器访问 GraphQL Playground。
使用以下命令来启动应用程序:
deno run --allow-net --allow-env --allow-read playground.ts
现在,您可以在浏览器中访问 http://localhost:8081
来测试您的 GraphQL API,您将看到一个交互式的 GraphQL Playground 工具。在左侧的面板中编辑 GraphQL 查询,并在右侧的面板中查看结果。
结论
在本文中,我们介绍了如何在 Deno 中使用 GraphQL 实现 API 查询。我们首先创建了一个用于查询 GitHub 用户的 GraphQL API,然后使用 Oak 库创建了一个 HTTP 服务器,将 GraphQL API 与 HTTP 服务器绑定在一起。最后,我们使用 oak-graphql 库为我们的 GraphQL API 启用了 GraphQL Playground。如果您对本文中的示例有任何疑问,请随时在评论区留言。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6749221de551c7205b20bbcd