knife4j使用与步骤

news2024/12/26 21:40:10

1、导入依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

2、knife4j的配置类(可有可无)

package com.common.config;


import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
@EnableOpenApi
public class Knife4jConfig {
    @Bean
    public Docket docket() {
        Docket docket = new Docket(DocumentationType.OAS_30)
            .apiInfo(new ApiInfoBuilder()
                .title("接口文档")
                .description("信息描述")
                // .termsOfServiceUrl("http://www.xx.com/")
                .contact(new Contact("knife", "https://knife.blog.csdn.net/", "xx@qq.com"))
                .version("1.0")
                .build())
            // 分组名称
            .groupName("all")
            .select()
            // 这里指定Controller扫描包路径
            .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
            .paths(PathSelectors.any())
            .build();

        return docket;
    }

}

3、访问地址(段口为自己tomcat的服务器端口)

http://localhost:8085/doc.html

4、演示

5、Api的使用与swagger使用相同,请查看

(84条消息) swagger的使用与步骤_梁山教父的博客-CSDN博客

6、使用位置

①可以放在单独的common工程,在里面导入依赖,并且配置其knife4j的配置类

②在其他工程中导入这个工程的maven坐标,并且在启动的扫描包的地址

package com.swagger;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@EnableOpenApi
@SpringBootApplication(scanBasePackages = {
    "com.swagger",
    "com.common"
})
public class SwaggerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SwaggerApplication.class, args);
    }

}

③这样就可以不用每个模块都进行配置就可以使用knife

7、使用idea插件自动生成swagger的注解,这样便可以不用每次去手写注解

注意,自动生成注解通过接口的注释来自动化生成(所以要有写好注释的习惯)

①搜索Swagger Tools

②安装以后,在所处需要添加的代码右键生成便可以通过注释生成注解

/**
 * 日志
 */
@Api(value = "/logback", tags = {"日志"})
@RestController
@RequestMapping("/logback")
@CrossOrigin
@Slf4j
public class LogbackController {
    /**
     * 测试
     * @return
     */
    @ApiOperation(value = "测试", notes = "测试", httpMethod = "GET")
    @GetMapping("/test")
    @ResponseBody
    public R test(){
        log.error("error");
        log.warn("warn");
        log.info("info");
        log.debug("debug");
        log.trace("trace");
        return R.ok("success").setCode(200);
    }
}

③实体类根据注释自动生成注解

package com.logback.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 系统日志
 * @TableName pd_common_opt_log
 */
@ApiModel(description = "系统日志")
@TableName(value ="pd_common_opt_log")
@Data
public class Log implements Serializable {
    /**
     * 主键
     */

    @ApiModelProperty("主键")
    @TableId(value = "id")
    private Long id;

    /**
     * 操作IP
     */

    @ApiModelProperty("操作IP")
    @TableField(value = "request_ip")
    private String request_ip;

    /**
     * 日志类型
#LogType{OPT:操作类型;EX:异常类型}
     */
    @ApiModelProperty("日志类型LogType{OPT:操作类型;EX:异常类型}")
    @TableField(value = "type")
    private String type;

    /**
     * 操作人
     */
    @ApiModelProperty("操作人")
    @TableField(value = "user_name")
    private String user_name;

    /**
     * 操作描述
     */
    @ApiModelProperty("操作描述")
    @TableField(value = "description")
    private String description;

    /**
     * 类路径
     */
    @ApiModelProperty("类路径")
    @TableField(value = "class_path")
    private String class_path;

    /**
     * 请求方法
     */
    @ApiModelProperty("请求方法")
    @TableField(value = "action_method")
    private String action_method;

    /**
     * 请求地址
     */
    @ApiModelProperty("请求地址")
    @TableField(value = "request_uri")
    private String request_uri;

    /**
     * 请求类型
#HttpMethod{GET:GET请求;POST:POST请求;PUT:PUT请求;DELETE:DELETE请求;PATCH:PATCH请求;TRACE:TRACE请求;HEAD:HEAD请求;OPTIONS:OPTIONS请求;}
     */
    @ApiModelProperty("请求类型HttpMethod{GET:GET请求;POST:POST请求;PUT:PUT请求;DELETE:DELETE请求;PATCH:PATCH请求;TRACE:TRACE请求;HEAD:HEAD请求;OPTIONS:OPTIONS请求;}")
    @TableField(value = "http_method")
    private String http_method;

    /**
     * 请求参数
     */
    @ApiModelProperty("请求参数")
    @TableField(value = "params")
    private String params;

    /**
     * 返回值
     */
    @ApiModelProperty("返回值")
    @TableField(value = "result")
    private String result;

    /**
     * 异常详情信息
     */
    @ApiModelProperty("异常详情信息")
    @TableField(value = "ex_desc")
    private String ex_desc;

    /**
     * 异常描述
     */
    @ApiModelProperty("异常描述")
    @TableField(value = "ex_detail")
    private String ex_detail;

    /**
     * 开始时间
     */
    @ApiModelProperty("开始时间")
    @TableField(value = "start_time")
    private Date start_time;

    /**
     * 完成时间
     */
    @ApiModelProperty("完成时间")
    @TableField(value = "finish_time")
    private Date finish_time;

    /**
     * 消耗时间
     */
    @ApiModelProperty("消耗时间")
    @TableField(value = "consuming_time")
    private Long consuming_time;

    /**
     * 浏览器
     */
    @ApiModelProperty("浏览器")
    @TableField(value = "ua")
    private String ua;

    /**
     *
     */
    @ApiModelProperty("")
    @TableField(value = "create_time")
    private Date create_time;

    /**
     *
     */
    @ApiModelProperty("")
    @TableField(value = "create_user")
    private Long create_user;

    @ApiModelProperty(hidden = true)
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么程序员的工资比其他行业高这么多?

不止一次听到有人说程序员工资高&#xff0c;更有甚者喊着“把IT工资打下来”。 拜托大哥大姐们&#xff01;看事情要客观好吧&#xff01;&#xff01; 虽然看起来程序员工资是不少&#xff0c;对比其他行业确实会高一些&#xff0c;但并不代表程序员这个岗位工资就要压到三千…

Elasticsearch:如何在 Elasticsearch 中正确使用同义词功能

同义词用于提高搜索质量并扩大匹配范围。 例如&#xff0c;搜索 England 的用户可能希望找到包含 British 或 UK 的文档&#xff0c;尽管这三个词完全不同。 Elasticsearch 中的同义词功能非常强大&#xff0c;如果实施得当&#xff0c;可以使你的搜索引擎更加健壮和强大。 在…

详解结构体内存对齐

目录 前言 一、结构体内存对齐规则 二、 offsetof 宏 三、结构体内存对齐的原因 四、 修改默认对齐数 前言 引入问题&#xff1a; #include <stdio.h>struct S {char c1;int i;char c2; };int main() {printf("%zd\n", sizeof(struct S));return 0; } 程…

干货 | 人脸识别技术的风险及应对方案

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;人脸识别技术概述人脸识别的发展阶段&#xff0c;主要分为三个阶段&#xff1a;起步阶段&#xff08;1950s-1980s&#xff09;&#xff0c;这一阶段的人脸识别只是作为一般性…

房产管理系统---系统安全性需求分析

数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。…

Linux学习笔记——HBase集群安装部署

5.11、大数据NoSQL数据库HBase集群部署 5.11.1、简介 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。 和Redis一样&#xff0c;HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同&#xff1a; Redis设计为少量数据&#xff0c;超快检索HBase设计…

【部署】Docker容器

Docker 使用 Google 公司推出的 Go 语言进行开发实现&#xff0c;基于 Linux 内核的 cgroup、namespace 以及 OverlayFS 类的 Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程&#xff0…

算法刷题打卡第63天:对称二叉树

对称二叉树 难度&#xff1a;简单 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false…

BOM浏览器对象模型

文章目录一、BOM概述1、什么是BOM2、BOM的构成二、window 对象的常见事件1、窗口加载事件&#xff08;1&#xff09;window.onload&#xff08;3&#xff09;DOMContentLoaded2、调整窗口大小事件三、定时器1、两种定时器2、setTimeout()定时器3、停止 setTimeout() 定时器4、s…

如何使用CMD修复硬盘命令来解决硬盘问题?

随着计算机的越来越普及&#xff0c;现在在我们的日常生活中都会使用到计算机电脑。硬盘作为计算机电脑的主要存储设备&#xff0c;里面存储着我们平时使用的软件文件、文档资料、照片等重要的数据文件。一旦硬盘损坏会给我们带来许多不必要的麻烦&#xff0c;那硬盘损坏有哪些…

图解卡尔曼滤波(Kalman Filter)

背景关于滤波首先援引来自知乎大神的解释。“一位专业课的教授给我们上课的时候&#xff0c;曾谈到&#xff1a;filtering is weighting&#xff08;滤波即加权&#xff09;。滤波的作用就是给不同的信号分量不同的权重。最简单的loss pass filter&#xff0c; 就是直接把低频的…

【Linux操作系统】1. Linux操作系统简介、安装

前言 本系列是Linux操作系统的一些知识以及实践内容&#xff0c;Linux操作系统作为开发最常使用的操作系统&#xff0c;是必备的一门求职、提升技术。本文先介绍Linux操作系统&#xff0c;并安装一个Linux操作系统。 Linux操作系统简介 Linux&#xff0c;全称GNU/Linux&#…

Javadoc

Javadoc 在学习JavaSE时&#xff0c;我们知道Java支持三种注释方式&#xff1a; 单行注释多行注释文档注释 Javadoc是文档注释&#xff0c;用来对类或方法进行标准的注释&#xff0c;在开发中写好JavaDoc非常重要。 在调用方法时&#xff0c;你可能会看到这样的情景 这种注…

Unity - 搬砖日志 - 如何设置AssetDatabase.Create(“xxx.asset“, mesh) 的Read/Write=false

最近很忙&#xff0c;想写的 BLOG 都遗漏编写了 踩坑的时间比较多&#xff0c;充电的时间少了很多 为了减少以后自己填坑时间&#xff0c;随便简单的记录一下 搬砖日志 环境 unity : 2020.3.37f1 pipeline : brp 问题 因为之前搜索、购买、使用了各式各样的 LOD 插件、工具…

机器学习100天(三十一):031 K近邻回归算法

机器学习100天,今天讲的是:K 近邻回归算法! 《机器学习100天》完整目录:目录 一、理论介绍 我们之前讲了 K 近邻分类算法,用来处理分类问题。其实 K 近邻也可以用来处理回归问题。 如左图所示,K 近邻分类算法的思路是选取与测试样本距离最近的前 k 个训练样本。然后对…

回收租赁商城系统功能拆解07讲-订单列表

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格&#xff0c;后台调整最终回收价&#xff0c;用户同意回收后系统即刻放款&#xff0c;用户微信零…

寒假题练——day(3)

题目1&#xff1a; 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 进阶&#xff1a;尝试设计时间复杂度为 O(n)、空间复杂度为…

58、正则表达式

目录 一、快速入门 二、正则表达式基本语法 1、基本介绍&#xff1a; 2、正则表达式底层实现 3、元字符&#xff08;Metacharacter&#xff09;- 转义号\\ &#xff08;1&#xff09;限定符 &#xff08;2&#xff09;选择匹配符 &#xff08;5&#xff09;字符匹配符…

FX5U DRVMUL指令多个轴的表格运行

1.简述该指令可以用GX Works3预先在表格数据中设定的控制方式的动作&#xff0c;执行多个轴的表格。 2.指令解释同时执行多个轴的表格。指令执行开始后&#xff0c;各轴独立进行动作&#xff0c;也可连续运行。但是&#xff0c;只可在同一模块内同时执行2.1 操作数n1在(n1)中指…

.NETCore 多线程学习笔记(多线程、线程结束顺序掌控、线程相对平均分配)

参考资料&#xff1a;多线程MutiThread最佳实践专题-1-1_哔哩哔哩_bilibili 跟着视频学习的&#xff0c;下面是自己的注释笔记和实验结果 写了个窗体来学习线程的 多线程、线程掌控、线程分配 下面会用到这个方法 /// <summary> /// 仅仅只是一个耗时方法 …