简介
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案, knife4j的前身是swagger-bootstrap-ui,为了契合微服务的架构发展,由于原来swagger-bootstrap-ui采用的是后端Java代码+前端Ui混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为knife4j。
maven引用
第一步,是在项目的pom.xml文件中引入knife4j的依赖,如下:
com.github.xiaoymin knife4j-spring-boot-starter 2.0.4
创建Swagger配置文件
@Configuration@EnableSwagger2@EnableKnife4jpublic class SwaggerConfiguration { @Bean(value = "defaultApi2") public Docket defaultApi2() { Docket docket=new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) //分组名称 .groupName("2.X版本") .select() //这里指定Controller扫描包路径 .apis(RequestHandlerSelectors.basePackage("com.yanyu.spring.knife4jboot.controller")) .paths(PathSelectors.any()) .build(); return docket; } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("接口说明") .description("DEMO服务接口说明") .termsOfServiceUrl("http://localhost:8888/") .version("1.0") .build(); }}
常用注解说明
@Api
解释:用在类中,标识这个类是swagger的资源
常用参数:
- tags:类标签,一般用来写类的名称或作用。
- description :详情描述
示例:
@RestController@Api(tags = "hello controller")public class HelloController {}
@ApiOperation
解释:用在方法上,说明方法的作用,每一个url资源的定义
常用参数:
- value :方法说明
- notes :注释说明
示例:
@RestController@Api(tags = "hello controller")public class HelloController { @ApiOperation(value = "hello1") @GetMapping("hello1") public String hello1() { return "hello1"; }}
@ApiOperationSupport
解释:用在类中,标识这个类是swagger的资源
常用参数:
- order:排序
- auth :作者
示例:
@RestController@Api(tags = "hello controller")public class HelloController { @ApiOperation(value = "hello1") @ApiOperationSupport(order = 2) @GetMapping("hello1") public String hello1() { return "hello1"; } @ApiOperation(value = "hello2") @ApiOperationSupport(order = 2) @GetMapping("hello2") public String hello2() { return "hello2"; }}
@ApiImplicitParam:
解释:作用在方法上,表示单独的请求参数
常用参数:
- name :参数名。
- value : 参数的具体意义,作用。
- required : 参数是否必填。
- dataType :参数的数据类型。
- paramType :查询参数类型,这里有几种形式:
示例:
@RestController@Api(tags = "hello controller")public class HelloController { @ApiOperation(value = "hello1") @ApiOperationSupport(order = 2) @GetMapping("hello1") public String hello1() { return "hello1"; } @ApiOperation(value = "hello2") @ApiOperationSupport(order = 1) @GetMapping("hello2") public String hello2() { return "hello2"; } @ApiOperation(value = "hello3") @ApiOperationSupport(order = 3) @ApiImplicitParam(name="name",value="用户名",dataType="String", paramType = "query") @GetMapping("hello3") public String hello3(String name) { return "hello3"; }}
@ApiModel
解释:用于描述一个数据模型的信息,即我们常用的实体、VO类、DTO类等描述
常用参数:
- value : 数据模型名称。(常用)
- description:具体描述
- parent:父类描述
示例:
@ApiModel(value = "学生")public class Student { @ApiModelProperty(value = "姓名") private String name; @ApiModelProperty(value = "地址") private String address;}
@ApiModelProperty
解释:用于描述数据模型的属性信息
常用参数:
- value:字段说明
示例:
@ApiModel(value = "学生")public class Student { @ApiModelProperty(value = "姓名") private String name; @ApiModelProperty(value = "地址") private String address;}
访问地址:
http://ip:port/doc.html
目录结构
如果有哪里写得不对的,还请各位小友指正,只有不断试错,才能慢慢提高。如果你觉得对你有帮助,请点赞+关注,谢谢!!!!!!