温馨提示×

Ubuntu Swagger怎样集成到项目中

小樊
53
2026-01-08 15:02:02
栏目: 智能运维

在 Ubuntu 上集成 Swagger OpenAPI 的实用步骤

一 前置准备

  • Ubuntu 环境准备:更新软件源并安装 Node.jsnpm(用于 Node 系集成),或安装 Docker(用于容器化集成)。
    • Node.js 与 npm
      • 命令:sudo apt update && sudo apt install -y nodejs npm
    • Docker
      • 命令:sudo apt update && sudo apt install -y docker.io
  • 概念说明:日常所说的 Swagger 现已统一为 OpenAPI 规范,工具链包含 Swagger Editor(编辑规范)、Swagger UI(可视化文档与调试)。

二 Node.js Express 项目集成

  • 安装依赖
    • 全局:sudo npm install -g swagger-jsdoc swagger-ui-express
    • 项目内:npm install swagger-ui-express
  • 准备 API 规范
    • 方式 A:手写 swagger.json / swagger.yaml
    • 方式 B:用 swagger-jsdoc 从代码注释生成(需按 JSDoc 规范书写注释)
  • 在 Express 中挂载 Swagger UI
    • 示例代码(CommonJS):
      • const express = require(‘express’);
      • const swaggerUi = require(‘swagger-ui-express’);
      • const swaggerDocument = require(‘./swagger.json’); // 或 YAML 加载
      • const app = express();
      • app.use(‘/api-docs’, swaggerUi.serve, swaggerUi.setup(swaggerDocument));
      • const port = process.env.PORT || 3000;
      • app.listen(port, () => console.log(Server running on port ${port}));
  • 访问文档
    • 浏览器打开:http://localhost:3000/api-docs
  • 生成客户端代码(可选)
    • 命令:npx swagger-jsdoc -o ./generated -d ./path/to/swagger/swagger.json
  • 提示
    • 若使用 YAML,可安装 yamljs 并在代码中用 YAML.load(‘./swagger.yaml’) 加载。

三 使用 Docker 快速托管 Swagger UI

  • 拉取镜像:docker pull swaggerapi/swagger-ui-express
  • 运行容器(将本地规范挂载到容器内并指定展示路径)
    • 命令示例:docker run -p 8080:8080 -e SWAGGER_JSON=/spec/swagger.json -v $(pwd)/swagger.json:/spec/swagger.json swaggerapi/swagger-ui-express
  • 访问文档
    • 浏览器打开:http://localhost:8080
  • 说明
    • 通过环境变量 SWAGGER_JSON 指定规范文件路径;也可挂载 swagger.yaml 并在环境变量中指向对应路径。

四 Spring Boot 项目集成简述

  • Springfox 2.x(较老)
    • 依赖(Maven):
      • io.springfox:springfox-swagger2:2.9.2
      • io.springfox:springfox-swagger-ui:2.9.2
    • 配置类启用 @EnableSwagger2,访问路径通常为:http://localhost:8080/swagger-ui.html
  • Springfox 3.x(OpenAPI 3)
    • 依赖(Maven):org.springfox:springfox-boot-starter:3.0.0
    • 访问路径通常为:http://localhost:8080/swagger-ui/index.html
  • 提示
    • Springfox 已进入维护模式,生产可考虑 SpringDoc OpenAPI(springdoc-openapi)替代,整合更简洁。

五 常见问题与排查

  • 访问不到页面
    • 确认服务已启动且端口已放行(如 30008080);如使用反向代理或容器,核对路由与端口映射。
  • 规范加载失败
    • 核对 swagger.json / swagger.yaml 路径、语法与引用;YAML 需使用相应解析库加载。
  • 容器中文或静态资源异常
    • 挂载规范文件时确保读写权限与编码一致;必要时设置容器内环境变量与工作目录。
  • 规范与代码不一致
    • 使用 swagger-jsdoc 时,确保注释符合规范并覆盖最新接口;变更后重新生成或重启服务。

0