swagger需要的包:
<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="") 注解,用来解释说明字段