Deno 中如何使用 GraphQL 进行 API 开发?

阅读时长 5 分钟读完

GraphQL 是一种用于 API 开发的查询语言和运行时环境,它可以让客户端精确地获取需要的数据,而无需进行多余的查询。Deno 是一个安全的 TypeScript 运行时环境,它可以让开发者在浏览器和服务器端使用 JavaScript 和 TypeScript。本文将介绍如何在 Deno 中使用 GraphQL 进行 API 开发。

安装依赖

在使用 GraphQL 进行 API 开发之前,我们需要安装以下依赖:

  • dgraphql:Deno 中的 GraphQL 库。
  • oak:Deno 中的 Web 框架。

可以使用 Deno 的包管理器 deno 进行安装:

创建 GraphQL Schema

在使用 GraphQL 进行 API 开发之前,我们需要定义一个 GraphQL Schema。Schema 描述了数据模型和查询的结构,并提供了用于查询和修改数据的方法。

在本例中,我们将创建一个简单的 Schema,其中包含一个 User 类型,它具有 idname 字段。

-- -------------------- ---- -------
------ - --- - ---- --------------------------------------

----- -------- - ----
  ---- ---- -
    --- ---
    ----- -------
  -

  ---- ----- -
    ------ --------
  -
--

在上面的代码中,我们使用 gql 函数定义了一个包含 User 类型和 users 查询的 Schema。

创建 Resolvers

在定义了 Schema 之后,我们需要编写 Resolvers,它们是将查询映射到数据源的函数。在本例中,我们将使用一个简单的数组作为数据源。

-- -------------------- ---- -------
----- ----- - -
  - --- ---- ----- ------- --
  - --- ---- ----- ----- --
  - --- ---- ----- --------- --
--

----- --------- - -
  ------ -
    ------ -- -- ------
  --
--

在上面的代码中,我们定义了一个 users 数组作为数据源,并编写了一个 users 查询的 Resolver,它返回 users 数组。

创建 API

在定义了 Schema 和 Resolvers 之后,我们需要将它们组合起来创建一个 API。在 Deno 中,我们可以使用 oak 框架来创建 API。

-- -------------------- ---- -------
------ - ------------ ------ - ---- ---------------------------------
------ - ----------- - ---- --------------------------------------

----- --- - --- --------------

----- ------ - --- ---------
----------------------- ------------- ------- --------- ---------- --------- ----

-------------------------
---------------------------------

----- ------------ ----- ---- ---

在上面的代码中,我们创建了一个 Application 对象,并使用 Router 对象定义了一个 /graphql 路由,它将请求转发到 graphqlHTTP 函数。graphqlHTTP 函数接受一个包含 Schema 和 Resolvers 的配置对象,并返回一个处理 GraphQL 请求的中间件函数。最后,我们将路由和中间件函数添加到应用程序中,并启动应用程序监听端口 8000。

发送查询请求

现在我们已经创建了一个 GraphQL API,我们可以使用任何支持 GraphQL 的客户端向其发送查询请求。例如,我们可以使用 curl 命令发送一个查询请求:

该查询将返回 users 数组中的所有用户的 idname 字段。

总结

在本文中,我们介绍了如何在 Deno 中使用 GraphQL 进行 API 开发。首先,我们安装了 dgraphqloak 依赖。然后,我们定义了一个包含 User 类型和 users 查询的 GraphQL Schema。接下来,我们编写了一个简单的 Resolver,它将查询映射到一个数组。最后,我们使用 oak 框架创建了一个 API,并向其发送了一个查询请求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66384b84d3423812e464d647

纠错
反馈