linux

如何在Linux上配置Swagger以支持多种语言

小樊
51
2025-08-15 03:48:53
栏目: 智能运维

在Linux上配置Swagger以支持多种语言,通常涉及到以下几个步骤:

  1. 安装Swagger工具: 首先,你需要安装Swagger工具。你可以使用npm(Node.js的包管理器)来安装Swagger。

    npm install -g swagger-jsdoc swagger-ui-express
    
  2. 创建Swagger配置文件: 创建一个Swagger配置文件,例如swagger.js,并在其中定义你的API规范。你可以使用YAML或JSON格式来编写规范。

    const swaggerJsDoc = require('swagger-jsdoc');
    
    const swaggerOptions = {
      definition: {
        openapi: '3.0.0',
        info: {
          title: 'My API',
          version: '1.0.0',
          description: 'API documentation for my application',
        },
      },
      apis: ['./routes/*.js'], // 指定包含API路由的文件
    };
    
    const swaggerDocs = swaggerJsDoc(swaggerOptions);
    module.exports = swaggerDocs;
    
  3. 集成Swagger UI: 在你的Express应用中集成Swagger UI,并使用之前创建的Swagger配置文件。

    const express = require('express');
    const swaggerUi = require('swagger-ui-express');
    const swaggerDocs = require('./swagger');
    
    const app = express();
    
    app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs));
    
    // 其他路由和中间件
    
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
    
  4. 支持多语言: Swagger UI本身支持多语言,但默认情况下可能只显示英文。你可以通过在Swagger配置文件中添加languages选项来指定支持的语言。

    const swaggerOptions = {
      definition: {
        openapi: '3.0.0',
        info: {
          title: 'My API',
          version: '1.0.0',
          description: 'API documentation for my application',
        },
      },
      apis: ['./routes/*.js'],
      ui: {
        language: 'zh-cn' // 设置默认语言为中文
      },
      languages: ['en', 'zh-cn'] // 支持的语言列表
    };
    
  5. 本地化资源文件: 如果你需要更复杂的本地化支持,可以考虑使用i18next等库来管理本地化资源文件。

    npm install i18next i18next-http-middleware
    

    然后在你的应用中配置i18next:

    const i18n = require('i18next');
    const Backend = require('i18next-fs-backend');
    const middleware = require('i18next-http-middleware');
    
    i18n.use(Backend).use(middleware.LanguageDetector).init({
      fallbackLng: 'en',
      debug: true,
      interpolation: {
        escapeValue: false
      },
      resources: {
        en: {
          translation: {
            "welcome": "Welcome to our website"
          }
        },
        "zh-cn": {
          translation: {
            "welcome": "欢迎访问我们的网站"
          }
        }
      }
    });
    
    app.use(middleware.handle(i18n));
    
    // 在Swagger UI中使用翻译
    app.get('/api-docs', (req, res) => {
      const { lng } = req.query;
      i18n.changeLanguage(lng, (err, t) => {
        if (err) return res.status(500).send(err);
        res.redirect(`/api-docs?lang=${lng}`);
      });
    });
    

通过以上步骤,你可以在Linux上配置Swagger以支持多种语言。确保你的应用服务器和Swagger UI都正确运行,并且本地化资源文件已经准备好。

0
看了该问题的人还看了