首页主机资讯Debian系统中Swagger的定制化开发有哪些方法

Debian系统中Swagger的定制化开发有哪些方法

时间2025-11-19 12:10:05发布访客分类主机资讯浏览202
导读:Debian系统中Swagger定制化开发方法 一 基础环境准备 更新系统并安装 Node.js 与 npm(若已安装可跳过):sudo apt update && sudo apt install -y nodejs n...

Debian系统中Swagger定制化开发方法

一 基础环境准备

  • 更新系统并安装 Node.jsnpm(若已安装可跳过):sudo apt update & & sudo apt install -y nodejs npm。
  • 全局安装常用工具:npm install -g swagger-ui-express swagger-jsdoc。
  • 准备规范文件:使用 OpenAPI 3.0.0 的 YAML/JSON(如 swagger.yaml 或 openapi.yaml),或采用注解方式在代码中生成。
  • 快速验证:启动服务后访问 http://localhost:3000/api-docs 查看文档页面是否正常渲染。

二 定制方向与落地做法

  • 文档内容与结构定制
    • 直接编辑 swagger.yaml/swagger.json,补充 info、servers、paths、components/schemas、security 等,确保与后端实现一致。
    • 使用 swagger-jsdoc 从代码注解自动生成规范,减少手工维护成本。
  • UI外观与行为定制
    • 通过 swagger-ui-express 的配置项进行界面与交互定制:如 deepLinkinglayoutpresetsplugins、以及 requestInterceptor/responseInterceptor 等。
    • 引入自定义 CSS/JS:使用 customCss/customJscustomCssUrl/customJsUrl 覆盖样式与脚本,实现品牌色、Logo、隐藏元素、扩展按钮等。
  • 静态资源与主题深度定制
    • 安装并引用 swagger-ui-dist 静态资源,按需替换内置 CSS/JS/图片,实现主题级深度定制。
  • 开发与部署方式
    • Express 托管 UI 与静态资源,适合与现有 Node 服务一体化。
    • 使用 Docker 部署官方镜像(如 swaggerapi/swagger-ui),便于环境一致与快速发布。

三 示例一 Express集成与UI配置

  • 安装依赖:npm install express swagger-ui-express swagger-jsdoc yamljs。
  • 目录结构建议:项目根目录放置 swagger.yaml,public 目录放置 custom.css/custom.js
  • 示例代码(app.js):
const express = require('express');
    
const swaggerUi = require('swagger-ui-express');
    
const YAML = require('yamljs');
    
const path = require('path');
    

const swaggerDocument = YAML.load('./swagger.yaml');
    

const app = express();
    
const PORT = process.env.PORT || 3000;
    

// 可选:提供自定义静态资源
app.use('/custom', express.static(path.join(__dirname, 'public')));


app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument, {
    
  deepLinking: true,
  layout: 'StandaloneLayout',
  presets: [
    swaggerUi.presets.apis,
    swaggerUi.presets.topbar
  ],
  // 自定义 CSS/JS(URL 指向 /custom 下资源)
  customCssUrl: '/custom/custom.css',
  customJsUrl: '/custom/custom.js',
  // 请求/响应拦截示例
  requestInterceptor: (req) =>
 {
    
    // 例如统一注入认证头
    // req.headers['Authorization'] = 'Bearer <
    your-token>
    ';
    
    return req;

  }

}
    ));
    

app.listen(PORT, () =>
 {

  console.log(`Swagger UI: http://localhost:${
PORT}
    /api-docs`);

}
    );
    
  • 运行与验证:node app.js,打开 http://localhost:3000/api-docs 查看效果。

四 示例二 代码注解自动生成规范

  • 安装:npm install swagger-jsdoc。
  • 配置 swagger-jsdoc(swaggerOptions.js):
const swaggerJsDoc = require('swagger-jsdoc');


const swaggerOptions = {

  swaggerDefinition: {

    openapi: '3.0.0',
    info: {

      title: 'Debian API',
      version: '1.0.0'
    }
,
    servers: [{
 url: 'http://localhost:3000' }
]
  }
,
  apis: ['./routes/*.js'] // 扫描路由注解
}
    ;
    

const swaggerDocs = swaggerJsDoc(swaggerOptions);
    
module.exports = swaggerDocs;
    
  • 在 Express 中使用:
const express = require('express');
    
const swaggerUi = require('swagger-ui-express');
    
const swaggerDocs = require('./swaggerOptions');
    

const app = express();
    
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs));
    
app.listen(3000, () =>
     console.log('Docs at http://localhost:3000/api-docs'));
    
  • 在路由文件中添加 JSDoc 注解(示例):
/**
 * @swagger
 * /users:
 *   get:
 *     summary: 获取用户列表
 *     responses:
 *       200:
 *         description: 用户数组
 *         content:
 *           application/json:
 *             schema:
 *               type: array
 *               items:
 *                 $ref: '#/components/schemas/User'
 * components:
 *   schemas:
 *     User:
 *       type: object
 *       properties:
 *         id:
 *           type: integer
 *           format: int64
 *         name:
 *           type: string
 */
app.get('/users', (req, res) =>
 {
 res.json([{
 id: 1, name: 'Alice' }
    ]);
 }
    );

  • 运行后访问 /api-docs 即可看到由注解生成的文档。

五 示例三 Docker化部署与多服务托管

  • 使用官方镜像快速启动:
docker pull swaggerapi/swagger-ui
docker run -p 8080:8080 -e SWAGGER_JSON=/spec/openapi.yaml -v $(pwd)/spec:/spec swaggerapi/swagger-ui
  • 访问 http://:8080 查看文档。
  • 多文档共存(基于 Nginx 反向代理示例,/etc/nginx/sites-available/swagger):
server {
    
  listen 80;
    
  server_name your-domain;


  location /docs1/ {
    
    proxy_pass http://127.0.0.1:8080/;
    
    proxy_set_header X-Forwarded-Prefix /docs1;

  }

  location /docs2/ {
    
    proxy_pass http://127.0.0.1:8081/;
    
    proxy_set_header X-Forwarded-Prefix /docs2;

  }

}
    
  • 将不同规范挂载到不同容器或路径,实现多项目、多版本的文档托管。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian系统中Swagger的定制化开发有哪些方法
本文地址: https://pptw.com/jishu/751037.html
AppImage安装步骤是什么 如何利用Swagger进行Debian应用的API监控

游客 回复需填写必要信息