knife4j使用
1、导入依赖:
<!--接口文档生成依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>
2、配置
package com.guigu.config.knife4jconfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import java.util.ArrayList;
import java.util.List;
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {
@Bean
public Docket adminApiConfig(){
List<Parameter> pars = new ArrayList<>();
ParameterBuilder tokenPar = new ParameterBuilder();
tokenPar.name("token")
.description("用户token")
.defaultValue("")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false)
.build();
pars.add(tokenPar.build());
Docket adminApi = new Docket(DocumentationType.SWAGGER_2)
.groupName("adminApi")
.apiInfo(adminApiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.wenxue"))
.paths(PathSelectors.regex("/admin/.*"))
.build()
.globalOperationParameters(pars);
return adminApi;
}
private ApiInfo adminApiInfo(){
return new ApiInfoBuilder()
.title("后台管理系统-API文档")
.description("本文档描述了后台管理系统微服务接口定义")
.version("1.0")
.contact(new Contact("wenxue", "http://wenxue.com", "wenxue@qq.com"))
.build();
}
}
3、controller层使用
@Api(tags = "后台登录管理")
@Slf4j
@RestController
@RequestMapping("/admin/system/index")
public class LoginController {
@Autowired
private SysUserService sysUserService;
@Autowired
private SysMenuService sysMenuService;
@ApiOperation("登录")
@PostMapping("login")
public Result login(@RequestBody LoginVo loginVo) {
String username = loginVo.getUsername();
log.info(username + "用户登录请求!");
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysUser::getUsername,username);
SysUser sysUser = sysUserService.getOne(wrapper);
if(sysUser == null){
throw new GuiguException(210,"用户不存在!");
}
String password = loginVo.getPassword();
String md5PassWord = DigestUtils.md5DigestAsHex(password.getBytes());
if(!md5PassWord.equals(sysUser.getPassword())){
throw new GuiguException(201,"密码错误!");
}
if(sysUser.getStatus() == 0 ){
throw new GuiguException(201,"用户已被禁用!");
}
String token = JwtHelper.createToken(sysUser.getId(), sysUser.getUsername());
Map<String,Object> map = new HashMap<>();
map.put("token",token);
return Result.ok(map);
}
}