随着Web服务的发展,RESTful风格的API越来越受到开发者的青睐,因为它简单且符合Web的本质。Spring框架也不落人后,提供了一个名为Spring MVC的模块,用于支持RESTful API的开发。Spring MVC是一个基于注解的Web框架,让开发者可以使用简洁且优雅的方式定义和实现API。
然而Spring MVC并没有提供一个方便且标准的方式来描述和文档化API,这给API的管理和维护带来了一定的困难。为了解决这个问题,一个名为Swagger的项目诞生了。Swagger是由Tony Tam在2010年创建的一个开源项目,旨在为RESTful API提供一个规范且完整的框架4。Tony Tam是一个资深的Java开发者,他在使用Spring MVC开发API时感受到了它的优点和缺点,所以他决定创建一个可以与Spring MVC无缝集成的工具,来帮助开发者更好地设计、描述、调用和可视化API。
Swagger项目很快就得到了开源社区和业界的认可和支持,成为了最流行的API开发工具之一。Swagger项目也不断地演进和完善,涵盖了各种语言和框架,如Python, Ruby, Node.js, Django, Rails等。Swagger项目也不断地与其他标准和工具集成,如OpenAPI Specification, Postman, Apigee等。
Swagger的主要作用是为RESTful风格的Web服务提供一个标准且完整的框架,包括以下几个方面:
Swagger作为一个流行且成熟的API开发工具,它有以下几个好处:
Swagger项目现在已经成为了一个庞大且活跃的生态系统,包括以下几个部分:
步骤说明
注意:
对于2.x.x版本,访问地址为:http://localhost:8080/{context-path}/swagger-ui.html
对于3.x.x版本,访问地址为:http://localhost:8080/{context-path}/swagger-ui/index.html
其中,localhost是你的本地主机名,8080是你的项目端口号,{context-path}是你的项目上下文路径。你需要根据你的实际情况来替换这些参数。
例如,如果你的项目端口号是8081,上下文路径是demo,Swagger版本是3.0.0,那么你可以访问以下地址来查看Swagger UI界面:
http://localhost:8081/demo/swagger-ui/index.html
<dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- springdoc-openapi-ui --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.5.12</version> </dependency></dependencies>
// 配置类@Configuration@OpenAPIDefinition( info = @Info( title = "Swagger3示例API", description = "这是一个使用Swagger3来开发Spring Boot应用中的API的示例", version = "1.0", contact = @Contact( name = "张三", email = "zhangsan@example.com", url = "1" ) ))public class SwaggerConfig {}
// 控制器类@RestController@RequestMapping("/user")@Tag(name = "用户管理API", description = "提供用户相关的操作")public class UserController { @GetMapping("/{id}") @Operation(summary = "根据ID查询用户信息", description = "返回用户实体对象") @ApiResponse(responseCode = "200", description = "查询成功") @ApiResponse(responseCode = "404", description = "用户不存在") public User getUserById(@PathVariable("id") @Parameter(description = "用户ID", required = true, example = "1") Long id) { // 模拟查询数据库 User user = new User(); user.setId(id); user.setName("张三"); user.setAge(18); return user; } @PostMapping("/") @Operation(summary = "添加用户信息", description = "返回添加结果") @ApiResponse(responseCode = "200", description = "添加成功") @ApiResponse(responseCode = "400", description = "参数错误") public String addUser(@RequestBody @Parameter(description = "用户实体对象", required = true) User user) { // 模拟插入数据库 return "添加成功"; }}
// 用户实体类@Schema(name = "用户实体类", description = "用户的基本信息")public class User { @Schema(description = "用户ID") private Long id; @Schema(description = "用户姓名") private String name; @Schema(description = "用户年龄") private Integer age; // 省略getter和setter方法}
Swagger注解有以下几种类型:
下面是一个对Swagger常用注解的总结表格:
本文链接:http://www.28at.com/showinfo-26-10899-0.html前后端分离项目必备——自动生成API文档神器Swagger
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com