swagget需要的包:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.5.0</version> </dependency>早springBoot的入口main方法中配置@EnableSwagger2注解
@EnableSwagger2 @SpringBootApplication @EnableFeignClients @EnableDiscoveryClient @EnableCaching public class SystemApp { private static ConfigurableApplicationContext ctx; public static void main(String[] args) { ctx = SpringApplication.run(SystemApp.class, args); } public static void showBeans() { String[] beanNames = ctx.getBeanDefinitionNames(); Arrays.sort(beanNames); for (String beanName : beanNames) { System.out.println(beanName); } } }在Controll 中增加 swagger 的 api 注解
@Api("任务管理-接口") @RestController @RequestMapping(path="/test) public class Controller { @ApiOperation(value="分页查询任务") @RequestMapping(path="/page", method=RequestMethod.POST) public Response page(@ModelAttribute final Condition condition) { } @ApiOperation("根据id查询任务") @RequestMapping(path="/findOne/{id}", method=RequestMethod.GET) @ResponseBody public Response findById(@PathVariable final Long id) { }
使用eclipse的run as重新启动Application的main函数
使用浏览器访问http://localhost:8080/swagger-ui.html。
即可查看UserControll中暴漏的接口
其他补充:
/** * Swagger2配置类 * 在与spring boot集成时,放在与Application.java同级的目录下。 * 通过@Configuration注解,让Spring来加载该类配置。 * 再通过@EnableSwagger2注解来启用Swagger2。 */ @Configuration @EnableSwagger2 public class Swagger2 { /** * 创建API应用 * apiInfo() 增加API相关信息 * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现, * 本例采用指定扫描的包路径来定义指定要建立API的目录。 * * @return */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("package")) //swagget扫描目录 .paths(PathSelectors.any()) .build(); } /** * 创建该API的基本信息(这些基本信息会展现在文档页面中) * 访问地址:http://项目实际地址/swagger-ui.html * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot中使用Swagger2构建RESTful APIs") .description("更多请关注http://www.baidu.com") .termsOfServiceUrl("http://www.baidu.com") .contact("sunf") .version("1.0") .build(); } }
和上面对
1、加上了方法名字、属性名、提示方便阅读理解
2、不用直接传对象,参数一个个配置简单明了,选择需要不需要都可
@Api(tags= "系统安全-角色管理", description="RoleController") @RestController public class RoleController { @ApiOperation(value="根据id查询角色(并封装属性菜单权限)") @RequestMapping(value="sys/security/role/{id}", method=RequestMethod.GET) public Response getById(@ApiParam(value="角色id", required=true) @PathVariable final Long id) { } @ApiOperation(value="分页复合查询角色") @RequestMapping(value="sys/security/role", method=RequestMethod.POST) public Response page( @ApiParam(value="角色名称", required=false) @RequestParam(required=false) final String name, @ModelAttribute final QueryCondition condition) { } @ApiOperation(value="保存角色(新增/修改)") @RequestMapping(value="sys/security/role", method=RequestMethod.PUT) public Response save( @ApiParam(value="角色id,修改时必须输入") @RequestParam(required=false) final Long id, @ApiParam(value="角色名称") @RequestParam final String name, @ApiParam(value="角色名称") @RequestParam(required=false) final String description, @ApiParam(value="角色拥有的菜单id,多个用半角逗号隔开") @RequestParam final Long[] menuIds) { } @ApiOperation(value="删除角色") @RequestMapping(value="sys/security/role/{id}", method=RequestMethod.DELETE) public Response save(@ApiParam(value="角色id", required=true) @PathVariable final Long id) { } }
如果请求参数是实体,可以在实体字段上添加@ApiModelProperty(value="") 注解,用来解释说明字段