Deno + Express REST API 教程(第二部分):测试、基准与 Docker 部署指南
简介
在本教程的第一部分中,我们已经成功地在几分钟内通过 Deno 和 Express 构建并运行了一个基础 REST API,无需额外配置。如果你还没有阅读第一部分,建议先回去查看并克隆配套的代码仓库,以便更好地理解本部分内容。
在本教程的第二部分中,我们将进一步完善项目,添加测试和基准测试,以衡量代码更改对 API 服务性能的影响。随后,我们还会构建并启动 Docker 镜像,完成整个开发流程。
添加测试和基准测试
为了确保 API 的各个路由能够返回预期结果,我们将使用 Deno 提供的内置测试工具来验证代码覆盖率,并通过基准测试评估性能。
创建测试文件
我们创建了一个名为 main_tests.ts 的文件,用于编写测试代码。以下是测试的主要逻辑:
- 测试通过发出请求并等待响应代码来验证特定调用是否返回了正确的数据。
- 使用异步函数和
fetch()方法进行请求操作。
测试代码示例如下:
// 示例代码略
添加基准测试
除了验证响应内容,我们还需要测量响应时间。Deno 提供了内置的基准测试工具,可以通过文件名后缀 _bench 自动识别基准测试文件。
我们创建了一个名为 main_bench.ts 的文件,内容如下:
// 示例代码略
基准测试的重点在于测量请求从发起到结束所需的时间,而非客户端解析响应的时间。通过这种方式,我们可以更准确地评估 API 的性能。
构建和运行 Docker 容器
配置 Docker
为了将项目部署到容器中,我们需要配置以下两个文件:
docker-compose.yml:定义容器的详细信息。Dockerfile:用于构建 Docker 镜像。
以下是 Dockerfile 的主要内容:
# 示例 Dockerfile 略
该文件会设置工作目录,将项目文件复制到 /app,并通过 deno-cache 缓存依赖项。最终,容器启动时会运行 task start 命令,该任务已在 deno.json 中定义。
启动容器
在终端中运行以下命令即可启动容器并构建镜像:
$ docker compose up --build
启动完成后,你可以通过 Docker 桌面应用程序查看构建的容器。
运行测试和基准测试
执行测试
在容器启动后,可以通过以下命令运行测试:
$ deno test -A
测试结果如下图所示:

执行基准测试
接下来,通过以下命令运行基准测试:
$ deno bench -A
基准测试结果如下图所示:

性能优化建议
在基准测试中,我们发现中间件中存在大量冗长的日志记录。通过禁用控制台输出,可以显著提升性能。以下是优化步骤:
- 打开
main.ts文件,找到记录请求的中间件函数reqLogger()。 - 注释掉相关日志记录代码。
- 使用以下命令启动开发服务并测试更改:
$ deno task dev
- 测试完成后,重新构建镜像或将更改推送到 CI 服务器。
需要注意的是,基准测试的具体数值可能因本地设备配置而异。
导出基准数据
Deno 提供了将基准测试结果导出为 JSON 格式的功能,便于实现自动化基准测试和数据可视化。使用以下命令导出数据:
$ deno bench -A --json
总结
通过本教程的第二部分,我们已经完成了以下任务:
- 添加了测试和基准测试,确保 API 的功能和性能。
- 配置并构建了 Docker 容器,实现了项目的容器化部署。
- 通过优化日志记录等方式提升了性能。
接下来,你可以继续扩展项目,连接真实的数据存储,完善路由逻辑,并进一步优化测试和基准测试流程。
原文链接: https://deno.com/blog/build-api-express-typescript-pt2
最新文章
- 如何为现代图形API编写渲染器 | Clean Rinse
- Python + BaiduTransAPI :快速检索千篇英文文献(附源码)
- Nexus API 的入门教程与使用指南
- API 规范:设计与最佳实践
- Undetectable检查AI API的使用指南
- 深度解析思维链Prompt(Chain-of-Thought Prompt):激发大模型推理能力的关键技术
- DeepSpeed-Chat 模型训练实战
- 使用NestJS和Prisma构建REST API:身份验证
- 教育革命:在App中集成ChatGPT API…
- LangChain | 一种语言模型驱动应用的开发框架
- API 是否应该采用语义化版本控制?
- 如何获取 RollToolsApi 开放平台 API Key 密钥(分步指南)