swagger接口文档怎么访问(swagger的访问路径)

swagger接口文档怎么访问(swagger的访问路径)Swagger 接口文档实时动态生成工具 接口文档对于前后端开发人员都十分重要 尤其近几年流行前后端分离后接口文档又变成重中之重 接口文档固然重要 但是由于项目周期等原因后端人员经常出现无法及时更新 导致前端人员抱怨接口文档和实际情况不一致 很多人员会抱怨别人写的接口文档不规范 不及时更新 当时自己写的时候确实最烦去写接口文档 这种痛苦只有亲身经历才会牢记于心

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



Swagger(接口文档实时动态生成工具

接口文档对于前后端开发人员都十分重要。 尤其近几年流行前后端分离后接口文档又变成重中之重。 接口文档固然重要,但是由于项目周期等原因后端人员经常出现无法及时更新, 导致前端人员抱怨接口文档和实际情况不一致。 很多人员会抱怨别人写的接口文档不规范,不及时更新。 当时自己写的时候确实最烦去写接口文档。这种痛苦只有亲身经历才会牢记于心。 如果接口文档可以实时动态生成就不会出现上面问题。 Swagger 可以完美的解决上面的问题。

Open API 规范(OpenAPI Specification)以前叫做Swagger 规范,是REST API 的API 描述格式。

Open API 文件允许描述整个API,包括:

Open API 规范可以使用YAML 或JSON 格式进行编写。这样更利于我们和机器进行阅读。

OpenAPI 规范(OAS)为RESTful API 定义了一个与语言无关的标准接口允许人和计算机发现和理解服务的功能,而无需访问源代码,文档或通过网络流量检查。 正确定义后,消费者可以使用最少量的实现逻辑来理解远程服务并与之交互。 然后,文档生成工具可以使用OpenAPI 定义来显示API, 使用各种编程语言生成服务器和客户端的代码生成工具,测试工具以及许多其他用例。

Swagger 是一套围绕Open API 规范构建的开源工具, 可以帮助设计,构建,记录和使用REST API。

Swagger 工具包括的组件: Swagger Editor : 基于浏览器编辑器,可以在里面编写Open API规范。类似Markdown 具有实时预览描述文件的功能。 Swagger UI: 将Open API 规范呈现为交互式API 文档。用可视化UI 展示描述文件。 Swagger Codegen: 将OpenAPI 规范生成为服务器存根和客户端库。 通过Swagger Codegen 将描述文件生成html 格式和cwiki 形式的接口文档,同时也可以生成多种言语的客户端和服务端代码。 Swagger Inspector: 和Swagger UI 有点类似,但是可以返回更多信息,也会保存请求的实际参数数据。 Swagger Hub: 集成了上面所有项目的各个功能,你可以以项目和版本为单位,将你的描述文件上传到Swagger Hub 中。 在SwaggerHub 中可以完成上面项目的所有工作,需要注册账号,分免费版和收费版。

使用Swagger,就是把相关的信息存储在它定义的描述文件里面(yml 或json 格式), 再通过维护这个描述文件可以去更新接口文档,以及生成各端代码.

使用Swagger 时如果碰见版本更新或迭代时, 只需要更改Swagger 的描述文件即可。 但是在频繁的更新项目版本时很多开发人员认为即使修改描述文件(yml 或json)也是一定的工作负担,久而久之就直接修改代码,而不去修改描述文件了,这样基于描述文件生成接口文档也失去了意义。

Marty Pitt 编写了一个基于Spring 的组件swagger-springmvc。 Spring-fox 就是根据这个组件发展而来的全新项目。 Spring-fox 是根据代码生成接口文档,所以正常的进行更新项目版本,修改代码即可,而不需要跟随修改描述文件。 Spring-fox 利用自身AOP 特性,把Swagger 集成进来,底层还是Swagger。但是使用起来确方便很多

所以在实际开发中,都是直接使用spring-fox。</p><p> 

讯享网

编写SpringBoot 项目,项目中controller 中包含一个Handler, 测试项目,保证程序可以正确运行。

可以使用自己经编写好的可以返回json的controller进行测试

在项目的pom.xml 中导入Spring-fox 依赖。目前最新版本为2.9.2,所以导入的依赖也是这个版本。 其中springfox-swagger2 是核心内容的封装。springfox-swagger-ui 是对swagger-ui 的封装。

添加此注解后表示对当前项目中全部控制器进行扫描。

在页面中可以通过可视化的进行操作项目中所有接口。

访问swagger-ui.html 后可以在页面中看到所有需要生成接口文档的控制器名称。

每个控制器中间包含多所有控制器方法的各种访问方式。 如果使用的是@RequestMapping 进行映射,将显示所有请求方式。 如果使用@PostMapping 将只有Post 方式可以能访问,下面也就只显示Post 的一个。

点击某个Handle方法,点击try it out,即可对该方法进行测试(类似postman)

填写好参数后, 点击excute,然后显示相关信息

模型models, 显示该项目所有的模型信息, 特别是controller中方法的返回值(一般是实体类)的信息

可以在项目中创建SwaggerConfig,进行配置文档内容。

Docket:摘要对象,通过对象配置描述文件的信息。 apiInfo:设置描述文件中info。参数类型ApiInfo select():返回ApiSelectorBuilder 对象,通过对象调用build()可以创建Docket 对象

创建基本信息的配置类

测试结果

测试,可以看到只有自定controller包下的controller类才会被扫描到

1)自定义注解(注解名称随意)

讯享网通过@注解名使用自定义注解 

2)添加规则 通过public ApiSelectorBuilder apis(Predicateselector)可以设置生成规则。


讯享网

public static Predicate not(Predicate predicate) :表示不允许的条件。 withMethodAnnotation:表示此注解是方法级别注解。

注: Predicate可以定义的其他方法

3)添加自定义的NotIncludeSwagger 注解 在不需要生成接口文档的方法上面添加 注解后,该方法将不会被Swagger 进行生成在接口文档中。

测试:添加该注解, 验证结果

在进行测试时,一定要注意清除浏览器缓存(或切换浏览器)!不然可能看不到效果哦~~~

例子中表示只有以/test/开头的url 才能被swagger 生成接口文档。

测试 复制一个用于测试Controller方法,更改url

可以看到只有以 /test/ 开头的EmpController2才会被显示

另外,该方法参数可以有多个:

如下方法是对 /test/ 开头的和以 /emp/开头的进行过滤

如何希望全部扫描可以使用paths(PathSelectors.any())

tags:类的名称。可以有多个值,多个值表示多个副本。 description:描述信息,已过时。

测试结果 可以看到Controller名和描述信息被修改(原来是Emp-controller)

value:接口描述 notes:详细提示信息

测试

@ApiParam 写在方法参数前面。用于对参数进行描述或说明是否为必添项等说明。 name:参数名称 value:参数描述 required:是否是必须

注意: 在这里@ApiParam可以取代@RequestParam的作用,但是在value属性上有所不同 @RequestParam必须要和参数类型一致,而在@ApiParam的value指的的是描述信息 所以在二者同时使用时需要注意,或者干脆只使用一个

测试结果

@ApiModel 是类上注解,主要应用Model,也就是说这个注解一般都是写在实体类上。 value:名称 description:描述

测试效果

@ApiModelProperty 可以用在 方法或属性 上。用于当对象作为参数时定义这个字段的内容。 value:描述 name:重写属性名 required:是否是必须的 example:示例内容 hidden:是否隐藏。

测试效果

@ApiIgnore 用于 方法或类或参数 上,表示这个方法或类被忽略。 和之前讲解的自定义注解@NotIncludeSwagger 效果类似。 只是这个注解是Swagger 内置的注解,而@NotIncludeSwagger 是我们自定义的注解。

@ApiImplicitParam 用在方法上,表示单独的请求参数,总体功能和@ApiParam 类似。 name:属性名 value:描述 required:是否是必须的 paramType:属性类型 dataType:数据类型

Swagger其实就是在管理Controller中的Handle所对应的接口, 由于管理后的描述文件是 json/yml格式不易观看, 所以引入了一个Swagger UI图形化管理页面 方便开发人员操作使用, 后端人员只需要引入Swagger和UI的坐标并在启动类添加注解, 前端人员只需要访问 UI页面就可以实时的动态的知晓最新的接口信息, 减少人员沟通, 提升开发效率 通过使用相关注解, 可以方便我们快捷的对UI 页面的信息进行有解释的有选择的显示

描述信息(上图)

供所有开发人员访问的UI(上图)

演示代码源码 链接:https://pan.baidu.com/s/1jVL0oL5FrXuDxa8BGk5BVA 提取码:65fz


小讯
上一篇 2025-05-03 12:21
下一篇 2025-05-09 23:42

相关推荐

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