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依赖,并配置路由转发。注意事项