如何在 Deno 中实现 GraphQL 服务

GraphQL 是一种用于 API 的查询语言,它可以提高 API 的灵活性和可靠性。在前端开发中,GraphQL 已经成为了一个非常热门的技术。而在 Deno 中实现 GraphQL 服务,也是一个非常有意义的事情。本文将介绍如何在 Deno 中实现 GraphQL 服务。

准备工作

在开始之前,我们需要先安装一些工具。首先,我们需要安装 Deno,可以通过以下命令进行安装:

安装完成后,我们还需要安装一些 Deno 的依赖,包括 graphqloak,可以通过以下命令进行安装:

创建 GraphQL 服务

在开始创建 GraphQL 服务之前,我们需要先创建一个数据源。在本文中,我们将使用一个简单的数据源,它包含了一个 users 数组,每个数组元素都包含了一个 name 和一个 email 属性。我们将使用这个数据源来演示如何创建 GraphQL 服务。

首先,我们需要创建一个 data.ts 文件,用于存储数据源:

export const users = [
  { name: "张三", email: "zhangsan@example.com" },
  { name: "李四", email: "lisi@example.com" },
  { name: "王五", email: "wangwu@example.com" },
];

然后,我们需要创建一个 schema.ts 文件,用于定义 GraphQL 的 schema:

import { gql } from "https://deno.land/x/graphql/mod.ts";

export const typeDefs = gql`
  type User {
    name: String
    email: String
  }

  type Query {
    users: [User]
  }
`;

在这个 schema 中,我们定义了一个 User 类型和一个 Query 类型。User 类型包含了一个 name 和一个 email 属性,Query 类型包含了一个 users 属性,用于查询所有的用户信息。

接下来,我们需要创建一个 resolvers.ts 文件,用于定义 GraphQL 的 resolvers:

import { users } from "./data.ts";

export const resolvers = {
  Query: {
    users: () => users,
  },
};

在这个 resolvers 中,我们定义了一个 users resolver,用于返回所有的用户信息。

最后,我们需要创建一个 server.ts 文件,用于创建 GraphQL 服务:

import { Application, Router } from "https://deno.land/x/oak/mod.ts";
import { applyGraphQL } from "https://deno.land/x/graphql/mod.ts";
import { typeDefs } from "./schema.ts";
import { resolvers } from "./resolvers.ts";

const app = new Application();

const router = new Router();

const GraphQLService = await applyGraphQL({
  Router: router,
  typeDefs: typeDefs,
  resolvers: resolvers,
});

app.use(router.routes());
app.use(router.allowedMethods());

app.use(GraphQLService.routes(), GraphQLService.allowedMethods());

console.log("Server started on http://localhost:4000");

await app.listen({ port: 4000 });

在这个 server 中,我们首先创建了一个 Application 实例和一个 Router 实例,然后使用 applyGraphQL 函数创建了一个 GraphQL 服务。最后,我们将路由和 GraphQL 服务添加到应用程序中,并监听 4000 端口。

测试 GraphQL 服务

现在,我们已经创建了一个 GraphQL 服务,接下来,我们可以使用 GraphQL 的客户端来测试这个服务。在本文中,我们将使用 curl 命令来测试 GraphQL 服务。

首先,我们可以通过以下命令来查询所有的用户信息:

这个命令将返回以下结果:

我们还可以通过以下命令来查询单个用户信息:

这个命令将返回以下结果:

总结

本文介绍了如何在 Deno 中实现 GraphQL 服务。我们首先创建了一个数据源,然后定义了 GraphQL 的 schema 和 resolvers,最后创建了一个 GraphQL 服务。通过本文的示例代码,我们可以了解到如何在 Deno 中使用 GraphQL,并可以进一步探索 GraphQL 在前端开发中的应用。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c078d9add4f0e0ffa63238