简介
Knife4j就是美化Swagger,更加好看。Swagger界面真欣赏不来。
这是Knife4j界面,是不是好看一些呢
快速开始
Knife4j已经默认集成了,springfox了,所以就不要再次引入了。
pom
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.9</version>
</dependency>
配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder()
//.title("swagger-bootstrap-ui-demo RESTful APIs")
.description("# swagger-bootstrap-ui-demo RESTful APIs")
.termsOfServiceUrl("http://www.xx.com/")
.contact("xx@qq.com")
.version("1.0")
.build())
//分组名称
.groupName("2.X版本")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.szh.quartzx.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
注意一点
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.szh.quartzx.controller"))
要修改为自己的controller路径。快捷键Ctrl+Shift+Alt+C 复制。不修改,找不到你的controller,入门的人一般会没注意到。
我的cottroller
@Api(tags = "首页模块")
@RestController
public class TestSwaggerController {
@ApiImplicitParam(name = "name",value = "姓名",required = true)
@ApiOperation(value = "向客人问好")
@GetMapping("/sayHi")
public ResponseEntity<String> sayHi(@RequestParam(value = "name")String name){
return ResponseEntity.ok("Hi:"+name);
}
@ApiOperation("某某某接口")
@GetMapping("/dddd")
public VOResp test(DTOReqParam dtoReqParam){
return new VOResp();
}
}
@ApiModel("xxxxDTOReqParam")
public class DTOReqParam {
@ApiModelProperty(value ="描述",example = "张三",required = true)
private String name;
@ApiModelProperty(value ="id集合")
private List<Long> idList;
@ApiModelProperty(value ="xxxxMap")
private HashMap<String,String> map;
}
@ApiModel("xxxxVO")
public class VOResp {
@ApiModelProperty(value = "名称")
private String name;
}
注意一点
@ApiModelProperty(value = “名称”) 这个value是对字段的描述。而name是会重写字段名称。
官方解释
/**
* A brief description of this property.
*/
String value() default "";
/**
* Allows overriding the name of the property.
*
* @return the overridden property name
*/
String name() default "";