Deno + Express REST API 教程(第二部分):测试、基准与 Docker 部署指南

作者:API传播员 · 2025-10-10 · 阅读时间:4分钟
本教程第二部分详细介绍了如何使用Express、TypeScript和Deno构建REST API的进阶步骤,包括添加测试和基准测试以验证API性能和代码覆盖率,以及如何构建和运行Docker容器。文章还提供了性能优化建议和基准测试数据的导出方法,帮助开发者进一步提升API服务的效率和可靠性。

一. 简介

在本教程的第一部分中,我们已经成功使用 DenoExpress 在几分钟内构建并运行了一个基础 REST API,无需额外配置。如果你还未阅读第一部分,建议先查看并克隆配套代码仓库,以便更好地理解本教程内容。

在本教程第二部分中,我们将进一步完善项目:

  • 添加 测试和基准测试,评估代码更改对 API 服务性能的影响。
  • 构建并启动 Docker 容器,完成整个开发流程。

二. 添加测试和基准测试

为了确保 API 各路由返回预期结果,我们将使用 Deno 内置测试工具进行 功能验证,并通过基准测试评估性能。

1. 创建测试文件

我们创建了 main_tests.ts 文件,用于编写测试代码。主要逻辑如下:

  • 通过发出请求并等待响应代码,验证特定调用是否返回正确数据。
  • 使用异步函数和 fetch() 方法进行请求操作。

测试示例代码如下:

// 示例代码略

2. 添加基准测试

除了验证响应内容,还需测量响应时间。Deno 内置基准测试工具会自动识别以 _bench 结尾的文件。

我们创建了 main_bench.ts 文件,主要关注请求从发起到结束的耗时,而非客户端解析响应的时间:

// 示例代码略

通过这种方式,可以更准确评估 API 性能。


三. 构建和运行 Docker 容器

1. 配置 Docker

项目容器化需要以下两个文件:

  1. docker-compose.yml:定义容器详细信息。
  2. Dockerfile:构建 Docker 镜像。

Dockerfile 示例结构如下:

# 示例 Dockerfile 略

该文件设置工作目录 /app,复制项目文件,并通过 deno-cache 缓存依赖。容器启动时将运行 task start(已在 deno.json 中定义)。

2. 启动容器

使用以下命令启动容器并构建镜像:

$ docker compose up --build

启动完成后,可在 Docker 桌面应用查看容器状态。


四. 运行测试和基准测试

1. 执行测试

在容器启动后,通过以下命令运行测试:

$ deno test -A

示例测试结果如下图所示:

测试结果

2. 执行基准测试

运行基准测试命令:

$ deno bench -A

示例基准测试结果如下图:

基准测试结果


五. 性能优化建议

基准测试显示,中间件中大量日志记录影响性能。优化步骤如下:

  1. 打开 main.ts 文件,找到请求日志中间件 reqLogger()
  2. 注释掉控制台输出代码。
  3. 启动开发服务并验证更改:
$ deno task dev
  1. 测试完成后,可重新构建镜像或推送至 CI 服务器。

⚠️ 注意:基准测试数值可能因本地设备配置而异。


六. 导出基准数据

Deno 支持将基准测试结果导出为 JSON 格式,便于自动化测试和可视化:

$ deno bench -A --json

七. 总结

在本教程第二部分中,我们完成了以下任务:

  • 添加 测试和基准测试,确保 API 功能与性能。
  • 配置并构建 Docker 容器,实现项目容器化部署。
  • 通过禁用冗余日志等方式 优化性能

接下来,你可以继续扩展项目:

  • 连接真实数据存储,完善路由逻辑。
  • 进一步优化测试和基准测试流程,实现持续性能监控。

原文链接: https://deno.com/blog/build-api-express-typescript-pt2