Swagger(现称为OpenAPI)在Linux环境中的集成主要包括以下几个步骤:
# 安装Node.js (用于Swagger UI)
sudo apt update
sudo apt install -y nodejs npm
# 安装Java (如果使用Swagger Codegen)
sudo apt install -y default-jdk
# 安装Python (可选,用于某些Swagger工具)
sudo apt install -y python3 python3-pip
# 全局安装Swagger CLI
sudo npm install -g swagger
# 安装Swagger UI
sudo npm install -g swagger-ui-watcher
# 拉取Swagger UI镜像
sudo docker pull swaggerapi/swagger-ui
# 运行Swagger UI容器
sudo docker run -p 8080:8080 -e SWAGGER_JSON=/foo/swagger.json -v /path/to/your/swagger/files:/foo swaggerapi/swagger-ui
# 安装相关依赖
npm install swagger-jsdoc swagger-ui-express --save
然后在你的Express应用中添加:
const swaggerJsdoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');
const options = {
definition: {
openapi: '3.0.0',
info: {
title: 'Your API',
version: '1.0.0',
},
},
apis: ['./routes/*.js'], // 包含API文档注释的文件路径
};
const specs = swaggerJsdoc(options);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));
添加Maven依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
添加配置类:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
# 下载Swagger Codegen
wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.25/swagger-codegen-cli-3.0.25.jar -O swagger-codegen-cli.jar
# 生成客户端代码
java -jar swagger-codegen-cli.jar generate -i swagger.json -l javascript -o ./client
# 生成服务器端代码
java -jar swagger-codegen-cli.jar generate -i swagger.json -l nodejs-server -o ./server
可以将Swagger UI集成到你的CI/CD流程中:
# 示例:在构建后自动更新Swagger文档
#!/bin/bash
# 生成最新的API文档
npm run generate-swagger
# 将文档复制到静态资源目录
cp swagger.json /var/www/html/api-docs/
# 重启相关服务
sudo systemctl restart your-service
# 使用Nginx添加基本认证
sudo apt install -y apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd username
# 然后在Nginx配置中添加:
location /api-docs {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8080;
}
以上步骤涵盖了在Linux环境中集成Swagger的主要方法。根据你的具体技术栈和需求,可以选择最适合你的集成方式。