swagger接口文档怎么访问(swagger如何访问)

swagger接口文档怎么访问(swagger如何访问)之前有朋友问到怎么动态生成 swagger2 的文档 因为大部分 swagger2 的使用是给 controller 代码加入注解 自动生成的文档 但如果在没有 controller 的情况下如何生成一个接口文档 比如上文五步搭建自己的低代码平台搭建的低代码平台 接口都是自动生成 没有 controller 代码的 那么如何生成这种动态接口对应的 swagger2 接口文档 本文还是只提供思路

大家好,我是讯享网,很高兴认识大家。



之前有朋友问到怎么动态生成swagger2的文档,因为大部分swagger2的使用是给controller代码加入注解,自动生成的文档,但如果在没有controller的情况下如何生成一个接口文档?

比如上文五步搭建自己的低代码平台搭建的低代码平台,接口都是自动生成,没有controller代码的,那么如何生成这种动态接口对应的swagger2接口文档

本文还是只提供思路,捎带swagger2的源码讲解,毕竟只要懂swagger2的运行原理,想凭空加入接口文档,实属轻而易举

直译为"Swagger的资源",Swagger文档是区分资源的,每个资源有自己的名字(name)、地址(url)、版本(swaggerVersion)

SwaggerResource

这个资源的区分如何体现的呐?打开swagger2的前端界面

swagger-ui.html
doc.html

每一个选项即代表一个资源(写过gateway集成接口文档的应该很眼熟),进入前端界面第二个请求的数据就是可选项

swagger-resources

如果是自动生成的接口文档,那么只有一个默认SwaggerResource,名字为“default”,url为

名字(name),版本(version)都挺好理解,这个url是什么意思呐?

答:是一个springweb的访问路径,每个资源有一个访问路径,而请求该路径的返回结果就是这个资源的配置,当我们前端选中某个资源时,就会对路径发起请求去获取该资源的配置(进入界面默认自动访问第一个资源的路径)

api-docs

那么就有疑问了,这个访问路径可以获取配置数据,也就是一个接口,那么这个接口是谁写的呐?

自动生成文档情况下,这个接口是Swagger内部帮我们实现的,默认访问路径是

源码在,源码截取重点如下

 

讯享网

swagger通过扫描注解等方式自动生成default资源的信息,包括资源名称,版本等基础信息,和所有接口的配置信息,封装成对象返回给前端,前端根据这个对象信息就画出整个文档界面

对象封装的信息就是文档某资源的所有信息,看一下它的重点参数

Swagger
basePath

基础路径,一般是"/", 如果通过网关访问则是"/{predicates}"

info

文档名称,版本,描述等

host

ip+端口

tags

文档目录

definitions

所有实体Model的定义,包含Model的类型,属性等,在下图可查看

Models
paths&parameters&responses

这几个最重要的,即所有接口配置的集合,接口的配置包括路径,参数,返回等信息

以上Swagger2源码示意图如下

Swagger2

研究完Swagger2机制,现在回到问题本身,如何动态生成文档(在没有controller代码情况下),以下提供两个思路

思路1

重写Swagger2Controller,再Swagger对象返回前修改,加入新的接口信息,应该可行,但我没试过

思路2

提供一个新的SwaggerResource,url指向自己写的接口,想返回什么就自己随意写了,只要符合他的返回数据规范即可,重点介绍一下这个方法

SwaggerResourcesProvider接口即SwaggerResource的提供者,它的默认实现注入到了Spring容器中

SwaggerResourcesProvider

这就是一个扫描注解提供default资源的实现,我们可以在加一个SwaggerResourcesProvider的实现,并注入Spring容器,并使用注解让其被优先使用

讯享网

写一个Rest接口返回动态的接口文档配置信息,其访问路径与在指向的路径对应即可

至于这个接口的写法,爱怎写都行(可以读数据库,可以读文件),只要返回数据符合他的规则即可(否则前端报错)

dynamic-api

小讯
上一篇 2025-05-01 20:37
下一篇 2025-05-24 21:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/137416.html