目录
Knife4jInsight是一款致力于基于OpenAPI2及OpenAPI3规范进行聚合的独立中间件,在Knife4j 4.0版本发布之际,作者也对该组件进行了了架构重新设计,代码重构。并也发布了该独立中间件的2.0版本,基于Spring Boot 3.0版本进行开发。总之,knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
工程配置
一、pom.xml引入
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
二、MyKnife4jConfiguration
Configuration类编写,主要是api接口文档的配置与说明信息
@Configuration
@Slf4j
public class MyKnife4jConfiguration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
//为当前包路径,控制器类包
.apis(RequestHandlerSelectors.basePackage("com.me.ok.cotroller"))
.paths(PathSelectors.any())
.build();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("用户管理 接口文档")
//创建人
.contact(new Contact("嗨嗨嗨!", "http://www.baidu.com", "1651904181@qq.com"))
//版本号
.version("1.0")
//描述
.description("API 描述")
.build();
}
}
三、字段说明配置
@Configuration
@Slf4j
public class MyKnife4jConfiguration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
//为当前包路径,控制器类包
.apis(RequestHandlerSelectors.basePackage("com.me.ok.cotroller"))
.paths(PathSelectors.any())
.build();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("用户管理 接口文档")
//创建人
.contact(new Contact("嗨嗨嗨!", "http://www.baidu.com", "1651904181@qq.com"))
//版本号
.version("1.0")
//描述
.description("API 描述")
.build();
}
}
四、api接口映射配置
类和上方@Api(""),对应APi接口使用@ApiOperation("")关键字
@Api("用户管理相关接口")
//@Controller 控制层需要的注解
//@RestController 使用这个也是可以的,但是使用后他里面所有请求返回的都是字符串!
//一般只需要作为接口放回JSON格式数据的话推荐使用@RestController
//@Controller这个是可以与Thymeleaf模板引擎使用时可以返回一个页面的
@Controller
//@RequestMapping指定路径名
//@RequestMapping("/test")用这个来指定路径也是可以的
@RequestMapping("/ok")
public class UserInfoController {
//获取到UserInfoService
@Autowired
private UserInfoService userInfoService;
@ApiOperation("查询全部用户操作")
//Get请求
@GetMapping
//@ResponseBody 注释后表示放回的是字符串
@ResponseBody
public String queryAll(){
List<UserInfo> userInfoList = userInfoService.queryAll();
return JSON.toJSONString(userInfoList);
}
@ApiOperation("查询单个用户操作")
//使用了RestFull风格
@GetMapping("/{id}")
@ResponseBody
public String query(@PathVariable(value = "id")Integer id){
UserInfo userInfo = userInfoService.queryById(id);
List<UserInfo> userInfoList = new ArrayList<>();
userInfoList.add(userInfo);
return JSON.toJSONString(userInfoList);
}
@ApiOperation("新增用户操作")
//post请求
//@RequestBody 表示接收请求是JSON格式的数据
@PostMapping
@ResponseBody
public String add(@RequestBody UserInfo userInfo){
userInfoService.add(userInfo);
return "添加OK";
}
@ApiOperation("删除用户操作")
//Delete请求
@DeleteMapping(value = "/{id}")
@ResponseBody
public String delete(@PathVariable("id")Integer id){
userInfoService.delete(id);
return "删除成功";
}
@ApiOperation("修改用户操作")
//Put请求
@PostMapping("/{id}")
@ResponseBody
public String update(@PathVariable("id")Integer id,
@RequestBody UserInfo userInfo){
userInfo.setId(id);
userInfoService.update(userInfo);
return "修改成功";
}
}