在Linux上配置Swagger以支持多种语言,通常涉及到以下几个步骤:
安装Swagger工具: 首先,你需要安装Swagger工具。你可以使用npm(Node.js的包管理器)来安装Swagger。
npm install -g swagger-jsdoc swagger-ui-express
创建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;
集成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}`);
});
支持多语言:
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'] // 支持的语言列表
};
本地化资源文件: 如果你需要更复杂的本地化支持,可以考虑使用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都正确运行,并且本地化资源文件已经准备好。