OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3)
demo见
Gitte
一、背景及名词解释
OpenAPI是规范的正式名称。规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公司)将Swagger 2.0规范捐赠给了Open API Initiative,该协会由来自技术领域不同领域的30多个组织组成。此后,该规范被重命名为OpenAPI规范。 Swagger 是一个 API文档维护组织,后来成为了 Open API 标准的主要定义者。现在最新的版本为17年发布的 Swagger3(Open Api3)。 是一个Open API规范实现工具包,由于Swagger工具是由参与创建原始Swagger规范的团队开发的,因此通常仍将这些工具视为该规范的代名词。目前可以认为Swagger3就是Open API 3.0 OpenAPI 3.0:2017年7月,Open API Initiative最终发布了OpenAPI Specification 3.0.0。它对2.0规范进行了很多改进。Open API 3.0规范可以用JSON或YAML编写,并且在记录RESTful API方面做得很好。同时标志着Swagger2成为过去式。 SpringFox是 spring 社区维护的一个项目(非官方),帮助使用者将 swagger2 集成到 Spring 中。常常用于 Spring 中帮助开发者生成文档,并可以轻松的在spring boot中使用。截至2020年4月,尚未支持 OpenAPI3 标准。 SpringDoc也是 spring 社区维护的一个项目(非官方),帮助使用者将 swagger3 集成到 Spring 中。 也是用来在 Spring 中帮助开发者生成文档,并可以轻松的在spring boot中使用
二、整合springdoc-openapi
maven的话,在pom.xml里面去掉springfox,添加如下的openapi依赖。
<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.5.2</version>
</dependency>
gradle的话 build.gradle.kts中添加
implementation("org.springdoc:springdoc-openapi-ui:1.5.2")
就这么简单,文档就构建完成了,不需要做任何的其他配置。 访问:http://ip:port/swagger-ui.html
三、将API分组分组展示
配置方法 java:
@Configuration
public class OpenAPIConfig {@Bean
public GroupedOpenApi restApi() {
return GroupedOpenApi.builder()
.group("rest-api")
.pathsToMatch("/rest/**")
.build();
}@Bean
public GroupedOpenApi helloApi() {
return GroupedOpenApi.builder()
.group("hello")
.pathsToMatch("/hello/**")
.build();
}}
kotlin:
@Configuration
class OpenAPIConfig {@Beanfun restApi(): GroupedOpenApi {return GroupedOpenApi.builder().group("rest-api").pathsToMatch("/rest/**").build()}@Beanfun helloApi(): GroupedOpenApi {return GroupedOpenApi.builder().group("hello").pathsToMatch("/hello/**").build()}
}
显示效果,通过下拉选择分组,查看组内API
四、使用 swagger3 注解代替 swagger2注解
如果你希望为文档加上更详细的中文注释,使用如下注解(对比Swagger2注解使用方法使用即可)。但是笔者觉得没有必要学习这东西,意义不大。注意变量、接口命名规范,英文的接口文档就挺好。 用 swagger 3 的注解(已经在上面maven包引入)代替 swagger 2 的注解,swagger 3 注解的包路径为io.swagger.v3.oas.annotations。
四、常见问题
api写入分组后未展示:
解决方法:放入数组后再使用,见这里
更多内容指引官网:https://springdoc.org/
相关文章:

linux环境下nacos的安装+启动,阿里云服务器安装nacos
nacos安装启动(linux环境): 基础:安装java环境 官网下载压缩包:如 nacos-server-1.2.1.tar.gz 放在自定义目录下 # 解压 tar -xvf nacos-server-1.2.1.tar.gz进入bin目录 cd nacos/bin # 启动 sh startup.sh -m sta…

SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一、引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错。 maven版本 <dependency><groupId>com.alibaba.cloud</groupId><artifact…

使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed
使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed 错误描述:postman请求正常,但客户端调用后接口没有反应,但返回了405错误。 解决方法:第三方sdk调用接口需要使用http…

ECS(Linux)连接RDS,使用命令行方式连接实例
使用命令行方式连接实例 通过命令行连接RDS MySQL数据库,连接方式如下: mysql -h<连接地址> -P<端口> -u<用户名> -p -D<数据库名称># 假设 用户testuser 密码123 数据库连接为 rm-bp1457xxxxxx.mysql.rds.aliyuncs.com mysql…

kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
CORS通信过程,都是浏览器或http插件自动完成,不需要 用户/开发人员 参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码是完全一样的。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,…

创建数据库,指定数据库的字符集和编码顺序
创建数据库,指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则}举例: create database collage CHARACTER SET utf8mb4 COLLATE utf8_general_ci

Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized 注解类加载延迟导致的异常 解决方法一:工厂模式 建一个工厂类,如UserServiceFactory,使用该方法 java版: public abs…

kotlin中继承父属性使用构造方法
kotlin中继承父属性使用构造方法 1. 定义父类,给它两个属性: abstract class AbstractResponseMessage {private var success trueprivate var reason: String? nullconstructor() {}constructor(success: Boolean, reason: String?) {this.succes…

在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置
在kotlin companion object中读取配置文件 静态类使用Value注解配置 class Config {Value("\${name}")fun setName(name: String) {Config.name name}companion object {private var name:String ? nullfun getName(): String {return name}} }在companion object…

微信公众号为指定openid用户推送消息
微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息。 第一个接口:客服发送消息 请求方式: POST 请求地址:https://a…

Docker容器的备份与恢复,Docker镜像的备份与恢复
1. 备份容器 首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表。要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命令。 # docker ps Docker Containers List 在此之…

SpringBoot部署脚本,拿走即用!
一个可以直接拿来使用的shell脚本,适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可。 # 若使用jenkins等工具远程构建,则使用绝对路径,下面的日志输出路径同࿰…

淘宝获取单笔订单信息服务端调用API及流程
淘宝获取单笔交易接口(文档地址):https://open.taobao.com/api.htm?docId54&docType2 调用接口所需依赖(文档地址):https://developer.alibaba.com/docs/doc.htm?treeId1&articleId101618&d…

在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)
现象:在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)。 当点开“了解详情”后显示: 了解详情 NET::ERR_CERT_INVALID 将您访问的…

Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂。 # 以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定 基础镜像,…

解决gitte提交报错 error: GE007: Your push would publish a private email address.
错误情况: gitte提交报错,无法提交上去,报错如下: remote: Powered by GITEE.COM [GNK-6.0] remote: error: GE007: Your push would publish a private email address. remote: You can make your email public or disa…

Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题
CORS(DELETE请求、PUT请求) Reject: HTTP DELETE is not allowed [DEBUG] 2021-08-25 15:23:52.401 [http-nio-10010-exec-1] HstsHeaderWriter.writeHeaders(169) - Not injecting HSTS header since it did not match the requestMatcher org.springf…

Not injecting HSTS header since it did not match the requestMatcher HSTS设置问题解决
HSTS请求设置 错误描述:在使用文件上传功能时,form表单提交带有header数据的请求时遇到这个问题,报错如下: Not injecting HSTS header since it did not match the requestMatcher org.springframework.security.web.header.wr…

restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type
报错信息: org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.xxx] and content type [text/html;charsetutf-8] 异常原因:RestTempla…

mongo报错:not authorized on bb to execute command { create: \“xxx\“...}
mongo报错: {"ok" : 0,"errmsg" : "not authorized on bb to execute command { create: \"a\", capped: \"1\", lsid: { id: UUID(\"f01a76ec-6261-4886-9a3f-e07169eed122\") }, $db: \"bb\" …

阿里云如何将服务器添加至跳板机,如何将服务器添加至jumpsever
如何将服务器添加至跳板机。 获取跳板机/root/.ssh/id_rsa.pub 中的内容 登陆要添加到跳板机的目标机器 /root/.ssh/authorized_keys 将跳板机id_rsa.pub 内容复制到目标机器的authorized_keys中,累加在后面。 目标机器执行service sshd restart 在跳板机控制台添加…

zip压缩多个文件,解压时不包含目录层级
假设我们有个目录叫 dev,dev中有很多文件,我们想要将dev中的文件打包,名字可能叫dev.zip,但当我们解压的时候,不想要解压生成一个dev目录,想要直接解压在当前目录,这样如何压缩呢? # 进入dev目…

过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件
过滤Linux下不同大小的文件,linux查找当前目录下 M/G 大小的文件,删除Linux下指定大小的文件 find ./ -type f -size 1G| xargs rm在清理系统日志文件、备份文件等场景中,可以使用这个命令。 这里的参数还可以改为 100M 等等,也…

mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string
mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string ‘oThZwuK9C-3uWaJaXtbuLJUFTTR4’ 解决方法: 在使用mybatis进行部分字段查询时,查询结果需要放置在对象中,如果参数不全&am…

数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法
数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对s…

docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name
docker 报错: Error response from daemon: Cannot restart container hello: driver failed programming external connectivity on endpoint hello (e58d18c830689e296c0fafdd98bf56e973cee3a3fbee8a3f002d46784f69ae70): (iptables failed: iptables --wait -t n…

系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗
在 《微服务架构设计模式》 一书中,作者总结了关于微服务的一些“重点”,原文如下: 中国企业和开发者对微服务架构的热情让我印象深刻。但如同我给所有客户的忠告一样,我想对本书的读者说: 第一,要记住微服务不是…

在k8s中使用gradle构建java web项目镜像Dockerfile
在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chowngradle:gradle . /home/gradle/src WORKDIR /home/gradle/src RUN gradle build --no-daemonFROM openjdk:8-jre-slimEXPOSE 10010RUN mkdir /appCOPY --frombuild /home/gradle/sr…

致26岁的自己
2021年10月17日,晴 想到很久很久没有去记录和输出想法,加上最近在不停地不停地思考,总结一下,并给两年后的自己做一个方向性的规划。 首先就是目前所取得的一个阶段性成果,到目前为止,我已经工作两年。在这…

阿里云K8S容器服务的使用
使用阿里云k8s构建服务一. 上传镜像二. k8s运行三. 服务配置导入四. 服务路由五. 节点亲和性和污点管理一. 上传镜像 在阿里云控制台找到“容器镜像服务”,开启镜像服务,这里选择个人实例即可(个人版限额,企业版付费)…