常用接口文档对比:
另外,Knife4j还支持导出离线文档
SpringBoot整合Knife4j
1. 导入Maven依赖:
本文使用的SpringBoot版本为2.3.9
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
2. 配置Knife4jConfiguration
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class Knife4jConfiguration {
@Bean(value = "defaultApi2")
public Docket defaultApi2() {
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//分组名称
.groupName("1.0")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.rave"))
.paths(PathSelectors.any())
.build();
return docket;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("AI绘画API文档") //标题
.contact(new Contact("Rave","http://127.0.0.1","3419596502@qq.com")) //作者
.description("AI绘画API文档") //简介
.termsOfServiceUrl("http://aidrawing.com") //服务URL
.version("1.0") //版本
.build();
}
}
3. 在controller使用knife4j注解
@RestController
@RequestMapping("/user")
@Api(value = "用户登录",tags = "用户登录")
public class LoginController {
@Autowired
private LoginService loginService;
@PostMapping("/login")
@ApiOperation("登录接口")
public ResponseResult login(@RequestBody LoginUserDto loginUserDto, HttpServletRequest request){
return loginService.login(loginUserDto,request);
}
}
其中LoginUserDto内容如下:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginUserDto {
@ApiModelProperty(value = "用户名",required = true)
private String username;
@ApiModelProperty(value = "密码",required = true)
private String password;
}
具体登录逻辑实现见SpringBoot整合SpringSecurity
效果如下: