GraphQL 是一种用于 API 开发的查询语言和运行时环境,它可以让客户端精确地获取需要的数据,而无需进行多余的查询。Deno 是一个安全的 TypeScript 运行时环境,它可以让开发者在浏览器和服务器端使用 JavaScript 和 TypeScript。本文将介绍如何在 Deno 中使用 GraphQL 进行 API 开发。
安装依赖
在使用 GraphQL 进行 API 开发之前,我们需要安装以下依赖:
dgraphql
:Deno 中的 GraphQL 库。oak
:Deno 中的 Web 框架。
可以使用 Deno 的包管理器 deno
进行安装:
deno install --allow-net --allow-read https://deno.land/x/dgraphql/mod.ts deno install --allow-net --allow-read https://deno.land/x/oak/mod.ts
创建 GraphQL Schema
在使用 GraphQL 进行 API 开发之前,我们需要定义一个 GraphQL Schema。Schema 描述了数据模型和查询的结构,并提供了用于查询和修改数据的方法。
在本例中,我们将创建一个简单的 Schema,其中包含一个 User
类型,它具有 id
和 name
字段。
-- -------------------- ---- ------- ------ - --- - ---- -------------------------------------- ----- -------- - ---- ---- ---- - --- --- ----- ------- - ---- ----- - ------ -------- - --
在上面的代码中,我们使用 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
命令发送一个查询请求:
curl -X POST -H "Content-Type: application/json" -d '{"query": "{ users { id name } }"}' http://localhost:8000/graphql
该查询将返回 users
数组中的所有用户的 id
和 name
字段。
总结
在本文中,我们介绍了如何在 Deno 中使用 GraphQL 进行 API 开发。首先,我们安装了 dgraphql
和 oak
依赖。然后,我们定义了一个包含 User
类型和 users
查询的 GraphQL Schema。接下来,我们编写了一个简单的 Resolver,它将查询映射到一个数组。最后,我们使用 oak
框架创建了一个 API,并向其发送了一个查询请求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66384b84d3423812e464d647