GraphQL 是一种使用查询语言来从服务器获取数据的 API 规范。使用 GraphQL,前端开发人员可以非常容易地获取所需的数据,而无需去请求多个不同的 RESTful API 接口。目前,GraphQL 在前端开发中越来越受欢迎,而 Deno 作为一个类似于 Node.js 的 JavaScript 和 TypeScript 运行时环境,也提供了便利的功能以便使用 GraphQL 来编写服务器端应用程序。本文将讲解使用 Deno 开发 GraphQL 服务器的最佳实践。
安装 Deno 和相关依赖
在使用 Deno 开发 GraphQL 服务器之前,我们需要先安装 Deno 和相关依赖。你可以访问 Deno 的官方网站 (https://deno.land/) 下载并安装 Deno。同时,我们还需要安装一些 Deno 的模块,包括如下模块:
oak
:一个相对于 Koa 框架的使用 Deno 编写的 Web 应用框架。graphql
:一个可以让我们定义 GraphQL schema 和 resolver 方法的 JavaScript 模块。
你可以使用以下命令来进行安装:
$ deno install --allow-read --allow-net https://deno.land/x/install/install.js $ deno install --allow-read --allow-net --allow-env --allow-run main.ts $ deno install --allow-read --allow-net --allow-env --allow-run --no-check https://deno.land/x/mod.land/mod.ts $ deno install --allow-env --allow-net https://deno.land/x/ntdb_server/main.ts $ deno install --allow-env --allow-net https://deno.land/x/ntdb/main.ts
定义 GraphQL schema
在使用 Deno 开发 GraphQL 服务器时,我们需要首先定义我们的 GraphQL schema。在 GraphQL schema 中,我们定义了我们的数据模型以及与这些数据模型交互的方法。我们使用 graphql
模块中的 GraphQLSchema
和 GraphQLObjectType
来定义我们的 schema。
下面是一个示例 schema 声明:
-- -------------------- ---- ------- ------ - -------------- ------------------ -------------- ----------- ------------ -------------- - ---- ---------- ----- -------- - --- ------------------- ----- ------- ------- -- -- -- --- - ----- ---------- -- ----- - ----- ------------- -- ---- - ----- ---------- - -- --- ----- --------- - --- ------------------- ----- -------- ------- -- -- -- ------ - ----- --- ---------------------- -------- -- -- - -- --- - - -- --- ----- ------------ - --- ------------------- ----- ----------- ------- -- -- -- -------- - ----- --------- ----- - ----- - ----- --- ----------------------------- -- ---- - ----- --- -------------------------- - -- -------- ------ ----- -- - -- --- - - -- --- ----- ------ - --- --------------- ------ ---------- --------- ------------ ---
在上面的示例代码中,我们定义了一个名为 User
的对象类型,以及一个名为 Query
和名为 Mutation
的对象类型,这两者用来定义查询和变异方法。我们使用 GraphQLInt
、GraphQLString
等类型来定义属性的数据类型。
定义 GraphQL resolver
在 GraphQL schema 中定义的方法必须要有相应的 resolver 函数来处理这些请求。我们可以在 QueryType
和 MutationType
中的函数中添加 resolver 函数。
下面是一个示例 resolver 函数:
-- -------------------- ---- ------- ----- --------- - - ------ - ------- - ----- -- -- --------- - ------------- ----- - ----- -- -- --
在上面的示例中,我们返回了一个 users
方法和一个 addUser
方法。这些方法接受相关参数,并使用它们来处理请求。返回结果的格式应该与相应 GraphQL 查询的格式相对应。
使用 Deno 和 Oak 编写 GraphQL API
在定义好我们的 schema 和 resolver 之后,我们可以使用 Deno 和 Oak 来编写我们的 GraphQL API。
下面是一个示例 API 声明:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ - ------------ - ---- ----------------------------------------- ------ - ------ - ---- -------------- ------ - --------- - ---- ----------------- ----- --- - --- -------------- ----- -------------- - ----- -------------- ----- ----------- --------- ------- ---------- --- -------------------------------- --------------------------------- ------------------- ------- -- ------------------------ ----- ------------ ----- ---- ---
上面的示例中,我们使用 applyGraphQL()
方法来创建 GraphQL 服务。在服务的挂载路径和 schema 和 resolver 必须要正确匹配。当服务启动后,我们可以在浏览器中访问 http://localhost:8000/graphql
查看是否运行成功。
总结
本文简要介绍了使用 Deno 开发 GraphQL 服务器的最佳实践,包括如何定义 GraphQL schema 和 resolver、使用 Deno 和 Oak 来编写 GraphQL API。希望读者们能够通过本文的讲解了解有关使用 Deno 开发 GraphQL 服务器的基础知识。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65b621c0add4f0e0ffed2af7