debian

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

小樊
40
2025-11-19 02:54:27
栏目: 智能运维

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

一 基础环境准备

二 定制方向与落地做法

三 示例一 Express集成与UI配置

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`);
});

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

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;
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'));
/**
 * @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' }]); });

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

docker pull swaggerapi/swagger-ui
docker run -p 8080:8080 -e SWAGGER_JSON=/spec/openapi.yaml -v $(pwd)/spec:/spec swaggerapi/swagger-ui
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;
  }
}

0
看了该问题的人还看了