1. 环境准备
在Debian系统中,首先需要安装运行Swagger与微服务的基础环境。对于基于Java的微服务(如Spring Boot),需安装Java JDK(建议11及以上版本)、Maven(或Gradle);对于Node.js微服务,需安装Node.js、npm。可通过sudo apt update && sudo apt install -y openjdk-11-jdk maven git(Java)或sudo apt install -y nodejs npm(Node.js)完成安装。
2. 微服务项目初始化
使用适合的工具创建微服务项目骨架。对于Java Spring Boot项目,推荐通过Spring Initializr生成,选择核心依赖(如Spring Web);对于Node.js项目,可使用express-generator(npm install -g express-generator)创建Express应用。项目创建后,进入项目目录准备后续配置。
3. 集成Swagger依赖
根据微服务技术栈添加对应的Swagger依赖:
pom.xml中添加Springfox依赖(支持Swagger 2)或SpringDoc依赖(支持OpenAPI 3):<!-- SpringFox(Swagger 2) -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<!-- SpringDoc(OpenAPI 3,推荐) -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
</dependency>
swagger-jsdoc(生成文档)和swagger-ui-express(集成UI):npm install --save-dev swagger-jsdoc swagger-ui-express
4. 配置Swagger文档
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo")) // 替换为你的包名
.paths(PathSelectors.any())
.build();
}
}
application.properties中启用UI:springdoc.swagger-ui.enabled=true
springdoc.api-docs.path=/api-docs
swagger.yaml定义API元数据(如路径、参数、响应),或在代码中通过swagger-jsdoc动态生成:const swaggerOptions = {
definition: {
openapi: '3.0.0',
info: { title: 'Microservice API', version: '1.0.0' },
servers: [{ url: 'http://localhost:3000' }]
},
apis: ['./routes/*.js'] // 指向包含API路由的文件
};
const swaggerSpec = swaggerJsdoc(swaggerOptions);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
5. 编写API接口与注解
在微服务的控制器层,使用Swagger注解详细描述API行为,提升文档可读性与测试便利性:
@RestController
@RequestMapping("/api/users")
@Api(tags = "用户管理") // 分组标签
public class UserController {
@GetMapping("/{id}")
@ApiOperation(value = "获取用户详情", notes = "根据ID查询用户信息")
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = User.class),
@ApiResponse(code = 404, message = "用户不存在")
})
public ResponseEntity<User> getUser(@PathVariable Long id) {
// 业务逻辑
return ResponseEntity.ok(new User(id, "John Doe"));
}
}
swagger-jsdoc会自动解析:/**
* @swagger
* /api/users/{id}:
* get:
* summary: 获取用户详情
* tags: [用户管理]
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* responses:
* 200:
* description: 成功
* content:
* application/json:
* schema:
* $ref: '#/components/schemas/User'
*/
router.get('/:id', (req, res) => {
res.json({ id: req.params.id, name: 'John Doe' });
});
6. 启动服务与访问Swagger UI
mvn spring-boot:run或java -jar target/*.jar运行;Node.js项目通过npm start运行。http://localhost:8080/swagger-ui/http://localhost:8080/swagger-ui.htmlhttp://localhost:3000/api-docs7. 多微服务文档聚合(可选)
在微服务架构中,若需统一管理多个服务的API文档,可使用以下方案:
/v3/api-docs端点,生成统一的API文档。需在Gateway项目中添加springdoc-openapi-starter-gateway-ui依赖,并配置路由转发。注意事项