GraphQL 是一个新型的 API 查询语言,它可以让前端开发人员更方便地获取服务器数据。在本文中,我们将介绍如何在 Deno 项目中使用 GraphQL。这个教程将会深入探讨 GraphQL 的基本原理,以及如何在 Deno 中构建 GraphQL 服务器和客户端。
GraphQL 的基本原理
GraphQL 的设计思想是让 API 查询变得更加灵活和高效。它的基本原理是让客户端指定需要查询或修改的数据的结构和类型,而不是像传统的 RESTful API 那样按照资源 URI 来访问数据。简单来说,GraphQL 常用来描述客户端与服务器之间的数据交互。
GraphQL 查询语言具有非常强的表达能力。它不仅可以查询数据,还可以对数据进行过滤、排序和分页等操作。同时,GraphQL 还支持订阅和实时更新等实时数据操作。
在 Deno 中构建 GraphQL 服务器
首先,我们需要安装 Deno 并创建一个新的 Deno 项目。建议使用 Deno 1.14 或以上版本。
安装 Deno:
curl -fsSL https://deno.land/x/install/install.sh | sh
安装完成之后,我们可以使用以下命令来创建一个新的 Deno 项目:
deno init my-graphql-server
接下来,我们需要安装一些必要的依赖,包括 GraphQL 和 Oak。
deno install --allow-net --allow-read https://deno.land/x/oak/mod.ts deno install --allow-net https://deno.land/x/deno_graphql/mod.ts
接下来,我们需要创建一个新的 TypeScript 模块,用于定义 GraphQL 模式。在本例中,我们将创建一个简单的模式,用于处理唯一的查询:“hello” 。
-- -------------------- ---- ------- -- --------- ------ - ------------------ -------------- ------------- - ---- ------------------------------------------ ---- -------------- - ------------------- -------- ------- --- ----- -------------- -------------- - --- ------------------- ----- -------- ------- -- -- -- ------ - ----- -------------- --------- - ------ ------- ---------- -- -- --- --- ------ ----- ------ - --- --------------- ------ -------------- ---
接下来,我们需要创建一个 HTTP 服务器。我们可以使用 Oak 中的 Application
类来实现。在本例中,我们将使用 /graphql
路由来处理 GraphQL 查询。
-- -------------------- ---- ------- -- --------- ------ - ------------ ------ - ---- --------------------------------- ------ - ------------ - ---- ------------------------------------------ ------ - ------ - ---- -------------- ----- ------ - --- --------- ----- --- - --- -------------- ----- -------------- - ----- -------------- ------- ----- ----------- ------- ------- ------ ----- --- ---------------------- ------------------------ --------------------------------- ------------------------- --------------------------------- ------------------ ------ --- ------------------------ ----- ------------ ----- ---- ---
现在,我们已经完成了 GraphQL 服务器的构建。接下来,我们来测试一下它是否正常工作。
使用以下命令启动服务器:
deno run --allow-net --allow-read server.ts
然后,在浏览器中访问 http://localhost:8000/graphql
。输入以下查询语句:
{ hello }
如果一切正常,你应该会得到以下响应:
{ "data": { "hello": "Hello, GraphQL!" } }
如果你得到了正确的响应,那么恭喜你,你已经成功地创建了一个 GraphQL 服务器!
在 Deno 中构建 GraphQL 客户端
在前端中使用 GraphQL 最常见的方式就是使用 Apollo 客户端。目前,Apollo 客户端还不完全支持 Deno。但是,我们可以使用其他的 Deno GraphQL 客户端,例如 graphql-request
。在本例中,我们将使用 graphql-request
客户端来进行示例。
首先,我们需要安装 graphql-request
客户端:
deno install --allow-net https://deno.land/x/graphql_request/mod.ts
接着,我们需要编写一个 TypeScript 模块,用于定义 GraphQL 查询。在本例中,我们将编写一个简单的查询,用于从我们的 GraphQL 服务器获取一条欢迎消息。
// query.ts import { gql } from "https://deno.land/x/graphql_request/mod.ts"; export const GET_HELLO = gql` query GetHello { hello } `;
现在,我们可以使用此查询在 Deno 中构建 GraphQL 客户端。在本例中,我们将在控制台中打印欢迎消息。
// client.ts import { request } from "https://deno.land/x/graphql_request/mod.ts"; import { GET_HELLO } from "./query.ts"; async function main() { const data = await request("http://localhost:8000/graphql", GET_HELLO); console.log(data.hello); } await main();
最后,我们可以使用以下命令来运行客户端:
deno run --allow-net client.ts
如果一切正常,你将在控制台中看到以下输出:
Hello, GraphQL!
这说明我们已经成功地创建了一个 Deno 中的 GraphQL 客户端!
总结
在本文中,我们介绍了如何在 Deno 项目中使用 GraphQL。我们讲解了 GraphQL 的基本原理,并展示了如何在 Deno 中构建 GraphQL 服务器和客户端。希望这个教程对你有所帮助,让你能够更好地了解如何使用 GraphQL 构建现代化的 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651b86cb95b1f8cacd32d059