在Linux环境下,要让Swagger支持多语言API文档,你需要遵循以下步骤:
npm install -g swagger-jsdoc
创建Swagger配置文件:在你的项目根目录下创建一个名为swagger.js的文件。在这个文件中,我们将配置Swagger以支持多语言。
配置多语言支持:在swagger.js文件中,你需要配置swagger-jsdoc选项以支持多语言。这里是一个示例配置:
const swaggerJsDoc = require('swagger-jsdoc');
const swaggerOptions = {
swaggerDefinition: {
info: {
title: 'My API',
description: 'My API with multiple languages support',
version: '1.0.0',
contact: {
name: 'Your Name',
},
},
},
apis: ['./routes/*.js'], // Your API routes file path
additionalModels: ['./models/*.js'], // Your API models file path
lang: 'en', // Default language
};
module.exports = swaggerJsDoc(swaggerOptions);
i18n的文件夹。在这个文件夹中,为每种语言创建一个子文件夹(例如en和zh)。在每个子文件夹中,创建一个名为swagger.json的文件,其中包含该语言的API文档翻译。例如,在en/swagger.json中:
{
"info": {
"title": "My API",
"description": "My API with multiple languages support",
"version": "1.0.0"
},
"paths": {
"/api/v1/hello": {
"get": {
"summary": "Get a hello message",
"responses": {
"200": {
"description": "A hello message in English"
}
}
}
}
}
}
在zh/swagger.json中:
{
"info": {
"title": "我的API",
"description": "支持多语言的API",
"version": "1.0.0"
},
"paths": {
"/api/v1/hello": {
"get": {
"summary": "获取一个问候消息",
"responses": {
"200": {
"description": "中文问候消息"
}
}
}
}
}
}
swagger.js文件中,添加一个名为i18n的属性,其中包含所有语言文件的路径。const swaggerJsDoc = require('swagger-jsdoc');
const swaggerOptions = {
// ...其他配置
i18n: {
locales: ['en', 'zh'],
directory: './i18n',
},
};
module.exports = swaggerJsDoc(swaggerOptions);
swagger-ui.js的文件。在这个文件中,我们将配置Swagger UI以支持多语言。const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./swagger');
const app = express();
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument, {
deepLinking: true,
presets: [
swaggerUi.presets.apis,
swaggerUi.presets.promises,
],
plugins: [
swaggerUi.plugins.DownloadUrl,
],
layout: "StandaloneLayout",
swaggerOptions: {
customSiteTitle: 'My API',
i18n: swaggerDocument.i18n,
},
}));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
现在,当你访问http://localhost:3000/api-docs时,你应该能看到Swagger UI,并且可以通过选择不同的语言来查看相应的API文档翻译。
注意:这个示例使用了swagger-ui-express库,你需要先安装它:
npm install swagger-ui-express