knife4j
就相当于是swagger
的升级版,对于我来说,它比swagger
要好用得多
<!-- swagger配置依赖knife4j --><dependency> <groupid>com.github.xiaoymin</groupid> <artifactid>knife4j-spring-boot-starter</artifactid> <version>2.0.9</version></dependency>
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。效果如图
(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); }}
还有其他一些注解,用到再了解
在实际项目中访问接口都添加了权限,每次访问都要带一个请求头参数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 条评论) |