首页 > 作文

Spring Boot项目集成Knife4j接口文档的实例代码

更新时间:2023-04-04 07:07:47 阅读: 评论:0

目录
1、在pom.xml引入依赖包2、创建knife4j配置文件3、使用knife4j注解4、全局参数

knife4j就相当于是swagger的升级版,对于我来说,它比swagger要好用得多

1、在pom.xml引入依赖包

<!-- swagger配置依赖knife4j --><dependency>    <groupid>com.github.xiaoymin</groupid>    <artifactid>knife4j-spring-boot-starter</artifactid>    <version>2.0.9</version></dependency>

2、创建knife4j配置文件

package com.yuyun.config;import io.swagger.annotations.apioperation;import io.swagger.models.auth.in;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;import springfox.documentation.builders.apiinfobuilder;import springfox.documentation.builders.pathlectors;import springfox.documentation.builders.requesthandlerlectors;import springfox.documentation.rvice.apiinfo;import springfox.documentation.rvice.apikey;import springfox.documentation.rvice.contact;import springfox.documentation.rvice.curityscheme;import springfox.documentation.spi.documentationtype;import springfox.documentation.spring.web.plugins.docket;import springfox.documentation.swagger2.annotations.enableswagger2webmvc;import java.util.arraylist;import java.util.list;/** * @author hyh */@configuration@enableswagger2webmvcpublic class knife4jconfiguration {    @bean(value = "defaultapi2")    public docket defaultapi2() {        docket docket = new docket(documentationtype.swagger_2)                // 是否启用swagger                .enable(true)                //分组名称                .groupname("1.0版本")                // 用来创建该api的基本信息,展示在文档的页面中(自定义展示的信息)                .apiinfo(apiinfo())                // 设置哪些接口暴露给swagger展示                .lect()                // 扫描所有有注解的api,用这种方式更灵活                .apis(requesthandlerlectors.withmethodannotation(apioperation.class))                //指定controller扫描包路径//                .apis(requesthandlerlectors.bapackage("com.yuyun.controller"))                // 扫描所有//                .apis(requesthandlerlectors.any())                .build();        return docket;    }    private apiinfo apiinfo() {        string name = "雨云";        string url = "https://www.xxx.com/";        string email = "1873591403@qq.com";        contact contact = new contact(name, url, email);        return new apiinfobuilder()                .title("api接口文档")                .description("api接口文档描述")                .termsofrviceurl("/d/file/titlepic/)                .contact(contact)                .version("1.0.1")                .build();    }}

注意:如果出现错误failed to start bean 'documentationpluginsbootstrapper'; nested exception is java.lang.nullpointerexception

是因为springboot版本高了,将版本降下去或者在application.yml添加如下内容即可解决该错误

spring:   mvc:    pathmatch:      matching-strategy: ant_path_matcher

项目运行后,访问ip+端口号+/doc.html,比如http://localhost:8110/doc.html。效果如图

3、使用knife4j注解

(1)在实体类中使用

@apimodel 放在在响应实体类上,用于描述该类

@apimodelproperty 描述该响应类的属性

/** * 企业信息表 * * @author   * @since 1.0.0 2021-12-17 */@data@apimodel(value = "企业童话西游信息表")@tablename("company")public class companydto implements rializable {    private static final lon明朝万历皇帝g rialversionuid = 1l;/** * 主键 */@apimodelproperty(value = "主键")private long id;/** * 企业名称 */@apimodelproperty(value = "企业名称")private string companyname;/** * 简介 */@apimodelproperty(value = "简介")private string description;}

(2)在controller层使用

@restcontroller@requestmapping("company")@api(tags = "企业信息表")public class companycontroller {    @autowired    private companyrvice companyrvice;    @getmapping("getlist")    @apioperation("根据条件获取数据")    @apiimplicitparams({            @apiimplicitparam(name = "id", value = "id", paramtype = "query", required = true, datatype = "string"),            @apiimplicitparam(name = "name", value = "名称", paramtype = "query", required = true, datatype = "string")    })    public result<list<companydto>> getlist(@apiparam(name = "address", value = "地址", required = true)  string address) {        list<companydto> companylist = company碳和氧气反应rvice.list();        return new result<list<companydto>>().success(com系统开发panylist);    }}

还有其他一些注解,用到再了解

4、全局参数

在实际项目中访问接口都添加了权限,每次访问都要带一个请求头参数token。全局参数就是为了方便传一个固定的参数。当添加全局参数后,所有的接口都会带上该参数。

第一种

在配置文件中加入

private list<curityscheme> curityschemes() {    list<curityscheme> apikeylist = new arraylist<curityscheme>();    apikeylist.add(new apikey("authorization", "authorization", in.header.tovalue()));    return apikeylist;}

defaultapi2()方法内引用

.curityschemes(curityschemes())

最后配置文件中的内容:

@configuration@enableswagger2webmvcpublic class knife4jconfiguration {    @bean(value = "defaultapi2")    public docket defaultapi2() {        docket docket = new docket(documentationtype.swagger_2)                // 是否启用swagger                .enable(true)                //分组名称                .groupname("1.0版本")                // 用来创建该api的基本信息,展示在文档的页面中(自定义展示的信息)                .apiinfo(apiinfo())                // 设置哪些接口暴露给swagger展示                .lect()                // 扫描所有有注解的api,用这种方式更灵活                .apis(requesthandlerlectors.withmethodannotation(apioperation.class))                //指定controller扫描包路径//                .apis(requesthandlerlectors.bapackage("com.yuyun.controller"))                // 扫描所有//                .apis(requesthandlerlectors.any())                .paths(pathlectors.any())                .build()                /* 设置安全模式,swagger可以设置访问token */                .curityschemes(curityschemes())                .curitycontexts(curitycontexts())                .pathmapping("/");        return docket;    }    private apiinfo apiinfo() {        string name = "雨云";        string url = "https://www.xxx.com/";        string email = "1873591403@qq.com";        contact contact = new contact(name, url, email);        return new apiinfobuilder()                .title("api接口文档")                .description("api接口文档描述")                .termsofrviceurl("/d/file/titlepic/)                .contact(contact)                .version("1.0.1")                .build();    }    /**     * 安全模式,这里指定token通过authorization头请求头传递     */    private list<curityscheme> curityschemes() {        list<curityscheme> apikeylist = new arraylist<curityscheme>();        apikeylist.add(new apikey("authorization", "authorization", "header"));        return apikeylist;    }    /**     * 安全上下文     */    private list<curitycontext> curitycontexts() {        list<curitycontext> curitycontexts = new arraylist<>();        curitycontexts.add(                curitycontext.builder()                        .curityreferences(defaultauth())                        .build());        return curitycontexts;    }    /**     * 默认的安全上引用     */    private list<curityreference> defaultauth() {        authorizationscope authorizationscope = new authorizationscope("global", "accesverything");        authorizationscope[] authorizationscopes = new authorizationscope[1];        authorizationscopes[0] = authorizationscope;        list<curityreference> curityreferences = new arraylist<>();        curityreferences.add(new curityreference("authorization", authorizationscopes));        return curityreferences;    }}

效果:菜大连交通违章查询网单上多了一个authorize,在参数值中添加上信息

刷新一下,再打开接口就会发现多了个请求头部

第二种

直接在菜单文档管理全局参数设置,然后添加参数:

再打开接口就会发现请求头参数加上了

源码地址:https://gitee.com/hyh17808770899/spring-boot/tree/master/springboot-03

到此这篇关于spring boot项目集成knife4j接口文档的文章就介绍到这了,更多相关spring boot集成knife4j接口文档内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 07:06:57,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/b09614426a09f52a6f005c661a8d4637.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Spring Boot项目集成Knife4j接口文档的实例代码.doc

本文 PDF 下载地址:Spring Boot项目集成Knife4j接口文档的实例代码.pdf

标签:接口   参数   文档   注解
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图