【Swagger】Swagger简介及简单使用

swagger介绍 前言 在前后端分离开发的过程中,前端和后端需要进行api对接进行交互,就需要一个api规范文档,方便前后端的交互,但api文档不能根据代码的变化发生实时动态的改变,这样后端修改了接口,前端不能及时获取最新的接口,导致调用出错,需要手动维护api文档,加大了开发的工作量和困难,而swagger的出现就是为了解决这一系列的问题。 swagger的概述 swagger是一套基于OpenAPI规范构建的开源工具,使用RestApi 1、代码变,文档变 2、跨语言,支持多种语言 ... 阅读详情

1.Swagger简介

1.1 前言

说起Swagger就不得不说前后端分离
当前最主流的前后端分离技术栈:Vue+Springboot

后端时代:
前端只用管理静态页面:html、css、js
最后统一交给后端,后端将其修改为jsp,在整个过程中,后端充当主力

前后端分离时代:
后端:后端控制层,服务层,数据访问层【后端团队】
前端:前端控制层,视图层【前端团队】
前端可以自定义一些伪后端数据:json,在写的时候就存在,不需要后端,前端工程依旧能够跑起来

那么前端后端如何交互?
此时可以考虑API

前后端分离好处:
前后端相对独立,松耦合
前后端设置可以部署在不同的服务器上

产生的问题:
前后端集成联调,前端人员和后端人员无法做到及时协商,尽早解决,最终导致问题爆发;

解决方式:
首先指定schema[提纲(计划的提纲)],实时更新最新的API,降低集成风险
早期:指定word计划文档
前后端分离时期:
前端测试后端接口:一些API测试工具(例如postman)
后端提供接口,需要实时更新最新的消息及改动

2、Swagger简介

Swagger号称世界上最流行的Api框架
RestFul Api 文档在线自动生成工具,Api文档与Api定义同步更新
直接运行,可以在线测试API接口

支持多种语言

官网:http://swagger.io/

2.Swagger简单使用

2.1 Springboot集成Swagger

SpringBoot集成Swagger => springfox,两个jar包

使用Swagger

要求:jdk 1.8 +, 否则swagger2无法运行

步骤:

  1. 新建一个SpringBoot-web项目
  2. 添加Maven依赖
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.9.2</version>
</dependency>

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.9.2</version>
</dependency>
  1. 编写HelloController,测试确保运行成功!
  2. 要使用Swagger,需要编写一个配置类SwaggerConfig来配置 Swagger
@Configuration //配置类
@EnableSwagger2// 开启Swagger2的自动配置
public class SwaggerConfig {  
}
  1. 访问测试 :http://localhost:8080/swagger-ui.html ,可以看到swagger的界面

2.2 配置Swagger

  1. Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swagger。
@Bean //配置docket以配置Swagger具体参数
public Docket docket() {
   return new Docket(DocumentationType.SWAGGER_2);
}
  1. 可以通过apiInfo()属性配置文档信息
//配置文档信息
private ApiInfo apiInfo() {
   Contact contact = new Contact("联系人名字", "http://xxx.xxx.com/联系人访问链接", "联系人邮箱");
   return new ApiInfo(
           "Swagger", // 标题
           "Swagger", // 描述
           "v1.0", // 版本
           "http://terms.service.url/组织链接", // 组织链接
           contact, // 联系人信息
           "Apach 2.0 许可", // 许可
           "许可链接", // 许可连接
           new ArrayList<>()// 扩展
  );
}
  1. Docket 实例关联上 apiInfo()
@Bean
public Docket docket() {
   return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}

重启项目后,配置生效

2.3 配置扫描接口

  1. 构建Docket时通过select()方法配置怎么扫描接口
@Bean
public Docket docket() {
   return new Docket(DocumentationType.SWAGGER_2)
      .apiInfo(apiInfo())
      .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
      .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
      .build();
}
  1. 重启项目测试,由于配置根据包的路径扫描接口,只能看到相应包小的接口
  2. 除了通过包路径配置扫描接口外,还可以通过配置其他方式扫描接口
basePackage(final String basePackage) // 根据包路径扫描接口
any() // 扫描所有,项目中的所有接口都会被扫描到
none() // 不扫描接口
// 通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
withMethodAnnotation(final Class<? extends Annotation> annotation)
// 通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
withClassAnnotation(final Class<? extends Annotation> annotation)
  1. 除此之外,还可以配置接口扫描过滤
@Bean
public Docket docket() {
   return new Docket(DocumentationType.SWAGGER_2)
      .apiInfo(apiInfo())
      .select()
      .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
       // 配置如何通过path过滤,即这里只扫描请求以/path开头的接口
      .paths(PathSelectors.ant("/path/**"))
      .build();
}
  1. 这里的可选值还有如下
any() // 任何请求都扫描
none() // 任何请求都不扫描
regex(final String pathRegex) // 通过正则表达式控制
ant(final String antPattern) // 通过ant()控制

2.4 配置Swagger开关

  1. 通过enable()方法配置是否启用swagger,如果是false,swagger将不能在浏览器中访问了
@Bean
public Docket docket() {
   return new Docket(DocumentationType.SWAGGER_2)
      .apiInfo(apiInfo())
      .enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问
      .select()
      .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
      .paths(PathSelectors.ant("/path/**"))
      .build();
}
  1. 动态配置当项目处于test、dev环境时显示swagger,处于prod时不显示
@Bean
public Docket docket(Environment environment) {
   // 设置要显示swagger的环境
   Profiles of = Profiles.of("dev", "test");
   // 判断当前是否处于该环境
   // 通过 enable() 接收此参数判断是否要显示
   boolean b = environment.acceptsProfiles(of);
   
   return new Docket(DocumentationType.SWAGGER_2)
      .apiInfo(apiInfo())
      .enable(b)
      .select()
      .apis(RequestHandlerSelectors.basePackage("com.kuang.swagger.controller"))
      .paths(PathSelectors.ant("/path/**"))
      .build();
}
  1. 可以在项目中增加配置文件

    不同环境可使用不同的配置文件

2.5 配置API分组

  1. 如果没有配置分组,默认是default。通过groupName()方法即可配置分组
@Bean
public Docket docket(Environment environment) {   
	return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).groupName("test1") // 配置分组
	// ······
}
  1. 重启项目即可查看分组
  2. 配置多个分组只需要配置多个docket即可
@Bean
public Docket docket1(){
	return new Docket(DocumentationType.SWAGGER_2).groupName("group1");
}
@Bean
public Docket docket2(){
	return new Docket(DocumentationType.SWAGGER_2).groupName("group2");
}
@Bean
public Docket docket3(){
	return new Docket(DocumentationType.SWAGGER_2).groupName("group3");
}
  1. 重启项目即生效

2.6 实体配置

  1. 新建一个实体类
//@Api("注释")
@ApiModel("用户实体")
public class User {
    @ApiModelProperty("用户名")
    private String username;
    @ApiModelProperty("密码")
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
  1. 只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中
@RestController
public class HelloController {

    //   /error默认错误请求
    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }

    //只要接口中,返回值中存在实体类,就会被扫描到Swagger中
    @PostMapping("/user")
    public User user() {
        return new User();
    }
}
  1. 重启即会生效

注:并不是因为@ApiModel这个注解让实体显示在这里了,而是只要出现在接口方法的返回值上的实体都会显示在这里,而@ApiModel和@ApiModelProperty这两个注解只是为实体添加注释的。

  • @ApiModel为类添加注释
  • @ApiModelProperty为类属性添加注释

总结:

  • 可以通过Swagger给一些比较难理解的接口或者属性,增加注释信息
  • 接口文档实时更新
  • 可以在线测试

【注意点】:在正式发布的时候,关闭Swagger!!!

  • 出于安全考虑
  • 而且节省内存

2.7 常用注解

Swagger的所有注解定义在io.swagger.annotations包下
在这里插入图片描述

Swagger介绍与使用 一、Swagger简介一、Swagger简介Swagger是。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTfu风格的web服务。目标是使客户端和文件系统作为服务器一同样的速度来更新文件的方法,参数和模型紧密集成到服务器。这个解释简单点来讲就是说,swagger是一款可以根据restful风格生成的接口开发文档,并且支持做测试的一款中间软件。要从前后端分离讲起**前后端分离:**VUE+SpringBoot 基本上都用这一套。 阅读详情

相关推荐

SpringBoot集成Swagger

SpringBoot集成Swagger 1、Swagger简介 前后端分离 前端 : 前端控制器、视图层 后端 : 后端控制器、服务层、数据访问层 前后端通过API进行交互 前后端相对独立且松耦合 前后端甚至可以部署在不同的服务器上 产生一个问题: 前后端集成联调,前端人员和后端人员无法做到,“及时协商,尽早解决”,最终导致问题集中爆发 解决问题 首先制定schema[计划的提纲],实时更新最新API,降低集成的风险; 前后端分离: 前端测试后端接口:postman (早些年) 后端提供接口,

weixin_45934729的博客 1535

Swagger——快速使用swagger

swagger使用教程,springboot整合使用swagger

YR_112233的博客 8万+

Zemax序列模式下激光二极管(LD)光源建模与像散校正实战

本文详细讲解了在Zemax序列模式下精确建立激光二极管(LD)光源模型并校正其像散的核心方法。通过将椭圆光束的发散角转换为渐晕系数,并巧妙利用理想柱面镜模拟像散,实现了对LD光源特性的高精度模拟。该方法特别适用于激光耦合、激光雷达等需要对像散光束进行精密控制的光学系统设计。

weixin_28455801的博客 439

Swagger使用的详细教程

swager的详细使用,及其空指针bug解决

mkmmkkghhhhhhhh的博客 1万+

高阶玩法——Dify生成的数据自动写入mysql数据库

采用自定义工具方式,利用 python编写一个服务sql_save_post,将接收到的内容写入指定数据库的表中,并为该服务撰写一个 OpenAPI 的 schema。配置工作流:我们以写入天气预报为例,在生成天气预报内容后,连接自定义工具“sql_save_post”,将所需的字段配置完成后,实现将生成的内容自动写入mysql数据库中。编写OpenAPI的schema:在dify平台的工具栏目,创建自定义工具,输入工具名称“sql_save_post”。工具:sql_save_post;

qq_44493378的博客 8541

评价模型——层次分析法(AHP)与熵权法(EWM)

层次分析法是定性与定量结合的多准则决策、评价方法。将决策的有关元素分解成目标层、准则层和方案层,并通过人们的判断对决策方案的优劣进行排序,在此基础上进行定性和定量分析。它把人的思维过程层次化、数量化,并用数学为分析、决策、评价、预报和控制提供定量的依据。

好好学习 天天向上 2万+

swagger 简介及简单API界面搭建

swagger 简介及简单API界面搭建 swagger 是什么 1.是一款快速书写API文档的框架 2.描述、生产、消费和可视化RESTful Web Service swagger 界面搭建 1.添加maven依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifact

qq_40464334的博客 509

【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局

本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。

weixin_29271263的博客 249

SpringBoot2学习笔记(九 - 1)REST简介与Swagger-UI的简单使用

SpringBoot2学习笔记(九)REST简介与Swagger的简单使用

LGX_TvT的博客 2371

Huber损失函数中的阈值δ是如何确定的?

Huber损失函数通过阈值δ将误差划分为两部分:当误差小于等于δ时,采用平方损失(MSE),以保持对小误差的敏感性;当误差大于δ时,采用线性损失(MAE),以降低异常值对模型的影响。

百态·数智思维 | 聚焦大数据、量化与未来AI 1930

深入解析逆时偏移(RTM)算法及其在C++中的实现

逆时偏移(Reverse Time Migration, RTM)是一种高级地震成像技术,广泛应用于地震勘探中。RTM通过逆时传播波场来构建地震子波,能够提供更高分辨率和更精确的地下构造图像。本文将详细介绍RTM的基本原理,并通过C++代码示例,深入解析如何实现和优化RTM算法。希望这篇文章能够为地球物理学家和C++开发者提供有价值的参考。

qq_38334677的博客 1529

Swagger2简单使用教程

Swagger2简单使用教程 1、简介 ​ Swagger是为了解决企业中接口(api)中定义统一标准规范的文档生成工具。很多采用前后端分离的模式,前端只负责调用接口,进行渲染,前端和后端的唯一联系,变成了API接口。因此,API文档变得越来越重要。swagger是一个方便我们更好的编写API文档的框架,而且swagger可以模拟http请求调用。 2、常用注解与示例 @Api()用于类:表示标识这个类是swagger的资源 @Api("用于类") @Controller public c

M丶Rock 1万+

【思考模型框架】前景理论(Prospect Theory),认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值

前景理论,是一种行为经济学理论。前景理论,描述了人们在不确定条件下如何作出决策。前景理论,认为人们并不是完全理性的决策者,而是根据一些心理上的偏差来评估选项的价值。

奶爸的编程之路,也就一周冷个三天 1643

Swagger简单使用

文章目录SwaggerSwagger 简介SwaggerSpringBoot集成Swagger配置SwaggerSwagger配置扫描接口注解介绍总结 Swagger 目标: 了解Swagger的作用和概念 了解前后端分离 在SpringBoot中集成Swagger Swagger 简介 前后端分离 Vue + SpringBoot 后端时代:前端只用管理静态页面;html==>后端。模板引擎 JSP=>后端是主力 前后端分离时代: 后端:后端控制层,服务层,数据访问层 【后端团队】

qq_40833874的博客 7991

Java中使用工厂模式和策略模式优雅消除if-else语句(UML类图+案例分析)

在最近的后端开发中,多多少少会发现有很多if-else语句,如果条件过多则会造成整体代码看起来非常臃肿。本篇博客汇总了我对工厂模式和策略模式的理解,以及我是如何把它们巧妙运用在实际项目当中的一些技巧进行了分享,如有问题,欢迎评论区讨论!

黄团团的个人博客 2612

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Swagger使用简介

一、Swagger的作用 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: 1. 接口的文档在线自动生成。 2. 功能测试。 二、Swagger的主要项目 Swagger是一组开源项目,其中主要项目如...

Ramboll的博客 1553

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

swagger使用教程——快速使用swagger

官网https。

Ajekseg的博客 2964

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Swagger2介绍及简单使用

目录一、简介二、开始使用三、高阶使用 视频资源:一小时掌握Swagger技术 一、简介 swagger是Restfull Api开发工具,提供 接口描述文档 及 调试功能 根据配置自动扫描接口生成接口文档,避免后端接口文档不能及时更新,便于前后端完成联调 详细介绍可参看:https://www.jianshu.com/p/349e130e40d5 二、开始使用 pom引入依赖 (1)springfox-swagger2 <!-- https://mvnrepository.co

liuhao的博客 1220

swagger的简介及使用方法

Swagger 从最初的一个 API 文档工具,逐渐发展成为一个完整的工具链,帮助开发者更高效地设计和管理 API。随着 OpenAPI 规范的推行,Swagger 成为这一规范的核心工具,继续服务于全球的开发者社区。

zzbzxzzdf的博客 1078

OpenApi3/Swagger3简单使用及与swagger2对比

Swagger 3 的使用 Swagger2已经在17年停止维护了,取而代之的是 Swagger3(基于openApi3),这篇文章将介绍如何在 java 中使用 OpenApi3(swagger3)以及与swagger2的对比。 1.基本介绍 1.1 Open API OpenApi是业界真正的 api 文档标准,其是由 Swagger 来维护的,并被linux列为api标准,从而成为行业标准。 1.2 Swagger swagger 是一个 api 文档维护组织,后来成为了 Open AP

loki的博客 1万+

Swagger简介

Swagger的快速使用,以及简单了解

编程小白养成手记 836

Swagger简介及在SpringBoot项目中的使用

一. 首先Swagger是什么?   Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger官方API文档:https://swagger.io/ 作用:   1. 接口的文档在线自动生成。   2. 功能测试。 Swagger的主见介绍:   Swagger Codegen: 通过Codegen 可以将

小郑要做干饭人的博客 6952

swagger配置项目及简单使用

现在项目前后端分离了,但是带来的问题是沟通成本太高,一个参数的大小写不正确的话,就会修改几分钟,这严重影响了自己的工作效率,挺不爽,今天读书的时候知道有swagger这个工具,于是把它集中到项目里来了。swagger是一个很好的配置文档的框架,下面是swagger的生态使用图: Swagger是一组开源项目,其中主要要项目如下:1.   Swagger-tools:提供各种与Swagger进行集成...

isunlight001的专栏 3319

简单使用Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

小林的博客 1275
上一篇: Web前端入门(十九)传统网页布局式之标准流、浮动
下一篇: Scala入门(五)函数式编程
Silver  Star
Silver Star 新星创作者: 大数据技术领域 新星创作者: 大数据技术领域
博客等级 码龄7年 1万+粉丝 72原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silver Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值