微服务架构在近年来变得越来越受欢迎,这种架构模式将应用程序拆分成较小的、独立的服务单元,每个服务单元都通过 API 进行通信。这种方式提高了系统的可维护性、可扩展性和可测试性。
Deno 是一个新的 JavaScript/TypeScript 运行时,可以在浏览器外运行 JS/TS 程序。与 Node.js 不同的是,Deno 集成了各种有用的功能,比如加密、Web Assembly 和 TypeScript。
在本文中,我们将研究如何在 Deno 中使用微服务,以及如何将其与 TypeScript 和 Oak(Deno 中的一种中间件框架)配合使用。
安装 Deno
在继续之前,您需要在计算机上安装 Deno。您可以在 Deno 的 官方网站 上找到安装说明。
创建一个简单的微服务
我们将创建一个简单的微服务,该服务将返回当前时间的字符串表示。我们将借助 Deno 的内置 HTTP 模块来处理接收到的 HTTP 请求。让我们看代码:
-- -------------------- ---- ------- -- --------- ------ - ----- - ---- ------- ----- ---- - ----- ---------------------------------------- ----- ------ - ------- ----- ---- --- --- ----- ------ --- -- ------- - ----- --- - --- ------- ------------- ----- ---- ---- -- ------- --- -
在上面的代码中,我们导入了 Deno 的 serve
函数,并在 PORT
常量中定义了服务器的端口号。然后我们创建了一个服务器对象,并在控制台上打印出它的 URL。最后我们使用一个 for-await 循环来等待接收到的请求,并返回一个带有当前时间的字符串的响应。
接下来,您可以通过以下命令在命令行运行此代码:
deno run --allow-net server.ts
在命令行中,我们为 Deno 提供了 --allow-net
标志。这是因为 Deno 默认情况下禁止访问任何网络。我们需要显式地授权 Deno 访问网络,这样服务器才能够接收和处理 HTTP 请求。
创建一个微服务客户端
现在我们已经创建了一个简单的微服务,我们可以继续创建一个客户端,该客户端将通过 HTTP 请求调用该服务并获取时间。让我们看看客户端的代码:
-- -------------------- ---- ------- -- --------- ----- --- - ------------------------ ----- --- - ----- ----------- ----- ---- - ----- ----------- ------------------
在上面的代码中,我们定义了服务器的 URL 并使用 fetch()
函数向它发送一个 HTTP 请求。然后我们等待服务器返回一个响应,并将响应转换为一个字符串。最后,我们在控制台上打印出这个字符串。
接下来,您可以通过以下命令运行此代码:
deno run --allow-net client.ts
同样,我们需要通过 --allow-net
标志来授权 Deno 访问网络。
使用 Oak 中间件
Deno 中的 Oak 是一个类似于 Express 的中间件框架。它使得使用 Deno 创建和处理 HTTP 服务器变得更加容易。让我们按照以下步骤修改我们的代码,使用 Oak 来创建一个服务器。
首先,您需要安装 Oak 模块。您可以通过以下命令来安装它:
deno install --allow-read --allow-net https://deno.land/x/oak/mod.ts
这个命令将从 Deno 库中下载并安装 Oak 模块。
现在,我们来修改我们之前的服务器代码,使用 Oak:
-- -------------------- ---- ------- -- ------------- ------ - ------------ ------ - ---- --------------------------------- ----- --- - --- -------------- ----- ------ - --- --------- --------------- ----- -- - ----- --- - --- ------- ----------------- - ---- ---- -- -------- --- ------------------------- --------------------------------- ------------------- -- ------- -- ---- ------- ----- ------------ ----- ---- ---
在上面的代码中,我们导入了 Application
和 Router
类,它们是 Oak 框架提供的两个核心类。我们创建了一个 Application
实例和一个 Router
实例,并为服务器定义了一个路由,该路由将返回当前时间的字符串表示。
接下来,我们告诉应用程序使用我们创建的路由,并使用 listen()
方法启动服务器。也可以使用 serve()
方法直接创建一个 HTTP 服务器。
最后,我们来创建一个使用 Oak 的客户端:
-- -------------------- ---- ------- -- ------------- ------ - ----- - ---- --------------------------------- ----- --- - ------------------------ ----- --- - ----- ----------- -- -------- - ----- ---- - ----- ----------- ------------------ - ---- - ------------------- -- --- --- ------- -
在上面的代码中,我们使用 Oak 的 fetch()
函数来向服务器发送 HTTP 请求。然后我们等待服务器返回一个响应,并将响应转换为一个字符串。最后,我们在控制台上打印出这个字符串。
结论
在本文中,我们研究了如何在 Deno 中使用微服务,并使用内置的 HTTP 模块和 Oak 框架来创建和处理 HTTP 服务器。我们还创建了一个简单的客户端应用程序,该应用程序通过 HTTP 请求调用我们的微服务。
如果您是前端工程师,学习如何构建微服务架构可能并非您的首要任务。然而,理解微服务架构的概念和原则将会使您更好地理解现代应用的基础架构,并使您更加有能力就相关问题进行讨论。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674b16670b2e50ef99543d2a