knife4j介绍及使用

        Knife4jInsight是一款致力于基于OpenAPI2及OpenAPI3规范进行聚合的独立中间件,在Knife4j 4.0版本发布之际,作者也对该组件进行了了架构重新设计,代码重构。并也发布了该独立中间件的2.0版本,基于Spring Boot 3.0版本进行开发。总之,knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

工程配置

一、pom.xml引入

       
            com.github.xiaoymin
            knife4j-spring-boot-starter
            3.0.3
        

二、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", "[email protected]"))
                //版本号
                .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", "[email protected]"))
                //版本号
                .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 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 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 "修改成功";
    }
}

你可能感兴趣的:(后端java,knife4j,java)