热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swagger01swagger介绍

swagger1.学习目标:了解前

swagger

1.学习目标:

  • 了解前后端分离
  • 了解Swagger的作用和概念
  • 在SpringBoot中集成Swagger

1.1 swagger由来

  • 前后端分离,当前流行的开发模式

Vue+SpringBoot

  • 早先的后端时代:前端只用管理静态页面;后端将html用模板引擎JSP进行开发

  • 前后端分离式时代:

    • 后端:后端控制层,服务层,数据访问层【后端团队】
    • 前端:前端控制层,视图层【前端团队】
      • mock后端数据json,不需要后端,前端工程依旧能够跑起来
  • 前端后如何交互?===>API

  • 前后端相对独立,松耦合;

  • 前后端甚至可以部署在不同的服务器上:

  • 产生一个问题:

前后端集成联调,前端人员和后端人员无法做到“即使协商,尽早解决”,最终导致问题集中爆发

写完一个接口后,自己去创建接口文档,或者修改接口后修改接口文档。多了之后,你肯定会发生一个操作,那就是忘记了修改文档或者创建文档

  • 解决方案:

    • 首先指定schema[计划的提纲],实时更新最新API,降低集成的风险:
    • 早些年:指定word计划文档,提交到git
  • 前后端分离:

    • 前端测试后端接口:postman
    • 后端提供接口,需要实时更新最新的消息及改动!

1.2 Swagger简介

  • 号称世界上最流行的Api管理框架:一个在你写接口的时候自动帮你生成接口文档的工具,只要你遵循它的规范并写一些接口的说明注解即可。
  • RestFul Api文档在线自动生成工具=>Api文档与API定义同步更新
  • 自动生成文档,只需要在难理解的接口或属性中使用注解进行标注,就能生成对应的接口文档。
  • 自动更新文档,由于是动态生成的,所以如果你修改了接口,文档也会自动对应修改(如果你也更新了注解的话)。这样就不会发送我修改了接口,却忘记更新接口文档的情况。
  • 支持在线调试,swagger提供了在线调用接口的功能。
  • 直接运行,可以在线测试AP接口;
  • 持多种语言:(java,Php.…)
  • 官网:https://swagger.io/
  • 在项目使用Swaggeri需要springfox;

springfox-swagger2
springfox-swagger-ui

  • 缺点,
  • 不能创建测试用例,只能提供一个简单的在线调试,如果你想存储你的测试用例,可以使用Postman或者YAPI这样支持创建测试用户的功能

  • 要遵循一些规范,它不是任意规范的。比如说,你可能会返回一个json数据,而这个数据可能是一个Map格式的,那么我们此时不能标注这个Map格式的返回数据的每个字段的说明,而如果它是一个实体类的话,我们可以通过标注类的属性来给返回字段加说明。也比如说,对于swagger,不推荐在使用GET方式提交数据的时候还使用Body,仅推荐使用query参数、header参数或者路径参数,当然了这个限制只适用于在线调试。

  • 没有接口文档更新管理,虽然一个接口更新之后,可能不会关心旧版的接口信息,但你“可能”想看看旧版的接口信息,例如有些灰度更新发布的时候可能还会关心旧版的接口。那么此时只能由后端去看看有没有注释留下了,所以可以考虑接口文档大更新的时候注释旧版的,然后写下新版的。

  • 虽然现在Java的实体类中有不少模型,po,dto,vo等,模型的区分是为了屏蔽一些多余参数,比如一个用户登录的时候只需要username,password,但查权限的时候需要连接上权限表的信息,而如果上述两个操作都是使用了User这个实体的话,在文档中就会自动生成了多余的信息,这就要求了你基于模型来创建多个实体类,比如登录的时候一个LoginForm,需要用户-权限等信息的时候才使用User类。

  • 综上,swagger功能已经满足我们的日常使用需要了,若是想协同开发或生成的测试用例等功能可以使用Apifox工具 官网
  • Apifox是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter
  • 20分钟学会Apifox
  • Apifox 是接口管理、开发、测试全流程集成工具,使用受众为整个研发技术团队,主要使用者为前端开发、后端开发、测试人员。
    在这里插入图片描述

1.3 SpringBoot集成Swagger

  • 新建springboot-web项目,有一个默认请求/error

  • 导入依赖


org.springframework.boot
spring-boot-starter-security


org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-thymeleaf


org.springframework.boot
spring-boot-devtools
runtime
true


org.springframework.boot
spring-boot-starter-test
test


org.springframework.security
spring-security-test
test




io.springfox
springfox-boot-starter
3.0.0


io.springfox
springfox-swagger2
3.0.0


io.springfox
springfox-swagger-ui
3.0.0

  • 新建一个helloSwagger控制器,返回hello swagger!信息

  • 配置Swagger:要使用swagger,我们必须对swagger进行配置,我们需要创建一个swagger的配置类,比如可以命名为SwaggerConfig.java

@Configuration // 标明是配置类
@EnableSwagger2 //开启swagger2功能 ,swagger老版本
public class SwaggerConfig {
}

啥也不配置,但有默认值!

  • 测试运行,访问页面!http://localhost:8080/swagger-ui/index.html

swagger 3.0版本有问题,的有以下3种方式解决:

  • 方式1:将swagger版本降为2.9.2

  • 方式2:将springboot的版本降为2.5.7后重新启动项目,并将@EnableSwagger2注解改为@EnableOpenApi即可

  • 方式3:springboot版本过高,springboot2.6更改了请求路径与与SpringMVC路径匹配规则,已经不是原来的AntPathMatcher了,改为了PathPatternParser。可能swagger3.0的一些地址还没作出相应的更新所以出错了。

    • 3.0有问题的需要导入springfox-boot-starter这一个依赖,注解可换可不换@EnableOpenApi都行,用@EnableSwagger2也行
    • 但需要在配置文件加上一句:

spring.mvc.pathmatch.matching-strategy=ant_path_matcher
解决这个问题,使用springboot集成swagger3.0启动就报错:
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

swagger3.0访问后台地址:http://localhost:8080/swagger-ui/index.html
swagger3.0以下:http://localhost:8080/swagger-ui.html

  • 方式4:3.0版本的,需要导入springfox-boot-starter这一个依赖,在主启动类加@EnableOpenApi和@EnableWebMvc

下一篇:swagger-02-配置swagger


版权声明:本文为weixin_42045639原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42045639/article/details/126311628
推荐阅读
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
  • 理解和应用HTTP请求中的转发与重定向机制
    在HTTP请求处理过程中,客户端发送请求(通常简称为req),服务器进行相应处理后返回响应(通常简称为res)。理解和应用客户端的转发与重定向机制是前端开发的重要内容。这两种机制在Web开发中具有关键作用,能够有效管理和优化用户请求的处理流程。转发机制允许服务器内部将请求传递给另一个资源,而重定向则指示客户端向新的URL发起新的请求,从而实现页面跳转或资源更新。掌握这些技术有助于提升应用的性能和用户体验。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
author-avatar
firespace
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有