本章介绍了前后端分离思想架构,从而引出了SwaggerUI企业服务文档的作用,对于SpringBoot与Swagger的集成进行了详细的实现,最后引入了一个综合案例演示了如何在项目中引入Swagger企业服务文档的实现。
Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下能发现和理解各种服务的功能。
总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
当服务通过Swagger定义,消费者就能与远程的服务互动通过少量的实现逻辑。
当开发工程师在后台的接口修改了后端,swagger可以实现自动的更新,而不需要人为的维护这个接口进行测试。
前面章节已经详细讲解了持久层MyBatisPlus、SpringBoot控制层的技术点,完成了后端实际业务需求的实现,为了便于前后端分离,接下来要开始后端程序API服务接口的开发工作。首先要进行SpringBoot与Swagger的集成工作。

@Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("cn.com.chinahitech.springboot_user")) .paths(PathSelectors.any()) .build(); } // 构建 api文档的详细信息 private ApiInfo apiInfo() { return new ApiInfoBuilder() // 页面标题 .title("SpringBoot基于Swagger2构建RESTful API") // 创建人信息 .contact(new Contact("作者", "网址信息", "作者邮箱")) // 版本号 .version("1.0") // 描述 .description("API描述信息") .build(); } }
@RestController @RequestMapping("/user") @Api(value="UserController相关的api",tags = {"用户信息的Controller"}) public class UserController { @Autowired private IUserService userService; @ApiOperation(value ="分页查询",notes = "根据参数page,分页查询用户信息列表") @ApiImplicitParam(name="page",value="查看指定页",paramType = "path",required = true,dataType ="Long" ) @ApiResponses({ @ApiResponse(code=200,message="请求成功"), @ApiResponse(code=-1,message="没有检索到相关数据"), @ApiResponse(code=500,message="检索出现异常!") }) @RequestMapping(value="/selectPage/{page}",method = RequestMethod.GET) public String selectPage(@PathVariable int page) { //执行的返回结果 Map




| API | 使用范围 | 使用位置 |
|---|---|---|
| @ApiModelProperty | 对象属性 | 用于出入参数对象的字段上 |
| @Api | 协议集描述 | 用于Controller类上 |
| @ApiOperation | 协议描述 | 用于Controller方法上 |
| @ApiResponses | Response集 | 用于Controller方法上 |
| @ApiResponse | Response | 用在@ApiResponses里边 |
| @ApiImplicitParams | 非对象参数集 | 用于Controller方法上 |
| @ApimplicitParam | 对象参数描述 | 用在@ApiImplicitParams的方法里边 |
| @ApiModel | 描述返回对象的意义 | 用在返回对象类上 |
| @ApiInore | 忽略服务注解功能 | 用于Controller方法上 |
| 属性 | 取值 | 作用 |
|---|---|---|
| paramType | 查询参数类型 | |
| path | 以地址的形式提交数据 | |
| query | 直接跟参数完成自动映射赋值 | |
| body | 以流的形式提交 仅支持POST | |
| header | 参数在request headers 里边提交 | |
| form | 以form表单的形式提交 仅支持POST | |
| dataType | 参数的数据类型 只作为标志说明,并没有实际验证 | |
| Long | ||
| String | ||
| name | 接收参数名(必须与方法中参数名一致) | |
| value | 接收参数的意义描述(描述信息) | |
| required | 参数是否必填 | |
| true | 必填 | |
| false | 非必填 | |
| defaultValue | 默认值 |
@API拥有两个属性:value、tags
生成的api文档会根据tags分类,tags如果有多个值,会生成多个list,每个list 会显示所有接口
tags案例说明:
value的作用类似tags, 但是不能有多个值
//save方式添加1条记录 @RequestMapping(value="/saveOne",method = RequestMethod.POST) @ApiOperation(value="添加单条用户",notes = "根据前端用户输入信息,进行添加",tags="User操作") @ApiImplicitParams({ @ApiImplicitParam(name="uname",value="用户名",required = true,paramType = "form",dataType = "String"), @ApiImplicitParam(name="age",value="年龄",required = true,paramType = "form",dataType = "Long"), @ApiImplicitParam(name="email",value="",required = true,paramType = "form",dataType = "String") }) @ApiResponses({ @ApiResponse(code=200,message="添加成功"), @ApiResponse(code=500,message="添加过程中出现异常") }) public String testSaveOneRecord(String uname,int age,String email){ //执行的返回结果 Map

开始实验