SpringBoot整合knife4j

SpringBoot整合knife4j

一、什么是knife4j

在日常开发中,写接口文档是我们必不可少的,而Knife4j就是一个接口文档工具,可以看作是Swagger的升级版,但是界面比Swagger更好看,功能更丰富

早期,swagger-boostrap-ui是1.x版本,如今swagger-bootsrap-ui到2.x,同时也更改名字Knife4j,适用于单体和微服务项目。

Knife4j官方网站:https://doc.xiaominfo.com/

二、整合knife4j

2.1 Knife4j配置

  1. 引入Knife4j相关依赖

    xml 复制代码
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
                <version>4.4.0</version>
            </dependency>
  2. 配置文件

    yml 复制代码
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/e-mart?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root
        password: root
    # springdoc-openapi项目配置
    springdoc:
      swagger-ui:
        path: /swagger-ui.html
        tags-sorter: alpha
        operations-sorter: alpha
      api-docs:
        path: /v3/api-docs
      group-configs:
        - group: 'default'
          paths-to-match: '/**'
          packages-to-scan: com.bailuo.swagger.controller
    # knife4j的增强配置,不需要增强可以不配
    knife4j:
      enable: true
      setting:
        language: zh_cn
  3. 实体类

    java 复制代码
    package com.bailuo.swagger.entity;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
    
      private long id;
      private String loginName;
      private String userName;
      private String password;
      private long sex;
      private String identityCode;
      private String email;
      private String mobile;
      private long type;
    }
  4. 创建mapper

    java 复制代码
    package com.bailuo.swagger.mapper;
    
    import com.bailuo.swagger.entity.User;
    
    import java.util.List;
    
    public interface UserMapper {
        List<User> selectUserList();
        int insertUser(User user);
        int updateUser(User user);
        User selectUser(int userId);
        int deleteUser(int userId);
    }
    xml 复制代码
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.bailuo.swagger.mapper.UserMapper">
        <insert id="insertUser">
            insert into easybuy_user(mobile,loginName,userName,sex,identityCode,email,type,password)
            values(#{mobile},#{loginName},#{userName},#{sex},#{identityCode},#{email},#{type},#{password})
        </insert>
        <update id="updateUser">
            update easybuy_user set mobile=#{mobile},loginName=#{loginName},userName=#{userName},sex=#{sex},identityCode=#{identityCode},email=#{email},type=#{type},password=#{password} where id=#{id}
        </update>
        <delete id="deleteUser">
            delete from easybuy_user where id=#{userId}
        </delete>
    
        <select id="selectUserList" resultType="com.bailuo.swagger.entity.User">
            select * from easybuy_user
        </select>
        <select id="selectUser" resultType="com.bailuo.swagger.entity.User">
            select * from easybuy_user where id=#{userId}
        </select>
    </mapper>
  5. 创建controller

    java 复制代码
    package com.bailuo.swagger.controller;
    
    
    import com.bailuo.swagger.entity.User;
    import com.bailuo.swagger.service.UserService;
    import com.bailuo.swagger.vo.ResultData;
    import io.swagger.v3.oas.annotations.Operation;
    import io.swagger.v3.oas.annotations.tags.Tag;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/user")
    @Tag(name = "用户管理接口")
    public class UserController {
        @Autowired
        UserService userService;
        @Operation(summary = "查询所有用户")
        @GetMapping("/")
        public ResultData<List<User>> list(){
            List<User> users = userService.selectUserList();
            return ResultData.success(users);
        }
        @Operation(summary = "修改用户")
        @PutMapping("/")
        public ResultData<Integer> update(@RequestBody User user){
            int resultUpdate = userService.updateUser(user);
            return ResultData.success(resultUpdate);
        }
        @Operation(summary = "查询指定用户")
        @GetMapping("/{id}")
        public ResultData<User> selectById(@PathVariable("id") int id){
            User user = userService.selectUser(id);
            return ResultData.success(user);
        }
        @Operation(summary = "添加用户")
        @PostMapping("/")
        public ResultData<Integer> list(@RequestBody User user){
            int insertResult = userService.insertUser(user);
            return ResultData.success(insertResult);
        }
    }

2.2 效果

此时运行项目,访问 IP+端口/doc.html

例如:http://127.0.0.1:8080/doc.html

相关推荐
代码之光_198019 分钟前
保障性住房管理:SpringBoot技术优势分析
java·spring boot·后端
ajsbxi25 分钟前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
StayInLove44 分钟前
G1垃圾回收器日志详解
java·开发语言
对许1 小时前
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
java·log4j
无尽的大道1 小时前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
小鑫记得努力1 小时前
Java类和对象(下篇)
java
binishuaio1 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE1 小时前
【Java SE】StringBuffer
java·开发语言
老友@1 小时前
aspose如何获取PPT放映页“切换”的“持续时间”值
java·powerpoint·aspose
颜淡慕潇1 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决