knife4j介绍及使用

目录

一、pom.xml引入

二、MyKnife4jConfiguration

三、字段说明配置

四、api接口映射配置


 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 "修改成功";
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
knife4j 提供的常用注解及属性如下: 1. @Api:用于标记 Controller 类,并提供一些描述信息。 - tags:接口分组标签,用于在页面上展示。 - value:接口描述。 - description:详细描述接口的用途。 - produces:接口返回的数据类型,多个值用逗号隔开。 - consumes:接口接收的数据类型,多个值用逗号隔开。 示例代码: ``` @Api(tags = "用户管理") @RestController @RequestMapping("/api/user") public class UserController { ... } ``` 2. @ApiOperation:用于标记接口并提供一些描述信息。 - value:接口描述。 - notes:详细描述接口的用途。 - httpMethod:请求方法类型,GET/POST/PUT/DELETE。 - response:接口返回的数据类型。 - responseContainer:接口返回数据类型的容器。 示例代码: ``` @ApiOperation(value = "查询用户信息", notes = "根据用户ID查询用户信息") @GetMapping("/{userId}") public UserVO getUser(@PathVariable Long userId) { ... } ``` 3. @ApiImplicitParam:用于描述单个请求参数的信息。 - name:参数名。 - value:参数描述。 - required:是否必填,默认为 false。 - dataType:参数类型。 - paramType:参数传递方式,query、header、path、body、form 中的一种。 示例代码: ``` @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "long", paramType = "path") @GetMapping("/{userId}") public UserVO getUser(@PathVariable Long userId) { ... } ``` 4. @ApiImplicitParams:用于描述多个请求参数的信息。 - value:一个 @ApiImplicitParam 数组。 示例代码: ``` @ApiImplicitParams({ @ApiImplicitParam(name = "username", value = "用户名", dataType = "string", paramType = "query"), @ApiImplicitParam(name = "password", value = "密码", dataType = "string", paramType = "query") }) @PostMapping("/login") public ResultVO login(String username, String password) { ... } ``` 5. @ApiModel:用于描述数据模型的信息。 - value:模型名称。 - description:模型描述。 示例代码: ``` @ApiModel(value = "用户信息", description = "用户基本信息") public class UserVO { ... } ``` 6. @ApiModelProperty:用于描述数据模型的属性信息。 - value:属性描述。 - required:是否必填,默认为 false。 - dataType:属性类型。 示例代码: ``` @ApiModel(value = "用户信息", description = "用户基本信息") public class UserVO { @ApiModelProperty(value = "用户ID", required = true, dataType = "long") private Long userId; @ApiModelProperty(value = "用户名", required = true, dataType = "string") private String username; ... } ``` 使用示例: 1. 引入依赖: ``` <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.2</version> </dependency> ``` 2. 在 Controller 类和接口方法上添加注解。 3. 启动项目,访问 http://localhost:port/doc.html 即可查看接口文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值