springboot + swagger2 学习笔记
引入步骤
1.添加依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${dev.lib.swagger2}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${dev.lib.swagger2}</version> </dependency>
2.配置swagger2
@Configuration @EnableSwagger2 public class SwaggerConfig { /** * 可以定义多个组,比如本类中定义把test和demo区分开了 (访问页面就可以看到效果了) */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.gt.controller")) .paths(PathSelectors.any()).build(); } private ApiInfo apiInfo() { return new ApiInfo("SWAGGER接口文档", // 大标题 "没什么好写的", // 小标题 "2.0", // 版本 "NO terms of service", "Czt@Chenzetan", // 作者 "Czt", // 链接显示文字 ""// 网站链接 ); } }
3.api代码
@ApiOperation(value = "获取商家用户店铺分页列表",notes = "") @GetMapping public GTJsonResult getMainsList(HttpServletRequest request, Page page ) { Page<Main> mainsList = mainService.getMainsList(SessionUtil.getBusUser(request).getId(), page); if (mainsList.getRecords() == null || mainsList.getRecords().size() == 0) { return GTJsonResult.instanceErrorMsg("没有数据"); } return GTJsonResult.instanceSuccessMsg(mainsList); }
4.访问 host//swagger-ui.html查看
遇到的问题:
1.如果方法请求参数中为实体类,那么不需要添加注解,即可实现这种效果,实体的参数会以paramter方式请求,例如3中的代码,page为object类型,请求只需要current=3即可注入到page参数中
2.上面这图为swagger较高版本,我用的是2.6.1,原来用2.2.2是不能实现这种效果。
3.@requestbody注解不能用于Get方式请求中
4.@ApiImplicitParam和@ApiParam 注意区分好,前面一个能指定参数的各个方面,包括paramType类型,例如在藏在路径中的getObject/{id} 这种的,apiparam注解就不能做到,暂时还不懂真正的区别是什么?有知道的请告知下!谢谢