【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万+

将ue4程序嵌入qt界面显示

需求:将ue4程序嵌入qt界面显示 思路:通过使用 windowsAPI 对ue4窗口进行设置跟随qt界面以及活动窗口时的位置层序设置

weixin_44342705的博客 5845

Swagger使用的详细教程

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

mkmmkkghhhhhhhh的博客 1万+

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 546

国密https握手协议抓包及流程详解

使用的密码套件清单-Cipher Suite,这里服务器端选择了ECC_SM4_CBC_SM3密码套件,也就是SM2公钥算法、SM4-CBC分组密码算法和SM3杂凑算法。具体来说,这里SM2算法密钥交换算法,SM4是加密算法(SM4-CBC)、SM3是校验算法(国标要求为HMAC-SM3)。服务器的加密证书:加密证书中在同样在扩展字段中KeyUsage标识出KeyEncipherment为true和dataEncipherment为true,即数字证书中包含的公钥可用来做密钥加密密钥和数据密钥。

ryanzzzzz的博客 5849

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

AI 赋能测试全生命周期:多 Agent 协同的自动化提效方案

本文提出了一种基于Coze平台的多Agent协同测试解决方案,旨在解决软件测试中PRD解析不清晰、测试点覆盖不全、用例编写效率低、代码生成耗时等痛点。通过PRD优化、测试点生成、测试用例生成和单元测试框架生成四个Agent的协同工作,结合Cursor工具实现从需求到代码的全链路自动化。以电商平台登录模块为例,展示了从模糊PRD到标准化测试用例和可执行Java单元测试代码的完整转化流程。该方案通过AI赋能显著提升测试效率,减少人工干预,实现测试覆盖率≥95%,为快速迭代的软件研发提供了高效的测试自动化支持。

QINJIEEE的博客 1103

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

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

LGX_TvT的博客 2372

fNIRS 公开数据集整理

关注“心仪脑”查看更多脑科学知识的分享。 关键词:数据整理、fNIRS 之前我们向大家推送了 Public Neuroscience Dataset 系列主题的第一期:《EEG公开数据集》,我们同时意识到大家对于神经科学公开数据集的需求。本期是该系列主题的第二期,我们在延续第一期初衷的基础上,整理了功能性近红外光谱(fNIRS)技术的公开数据集。 fNIRS 是一种非侵入性、便携且价格低廉的光学神经成像技术,它具有可观的空间和时间分辨率。因fNIRS技术问世较EEG晚了许多,所以应用此技术开展研究发.

psybrain的博客 4272

【OpenClaw从入门到精通】命令行操作指南——TUI模式高效管理OpenClaw(2026避坑版)

本文将详细介绍OpenClaw的命令行操作,重点介绍TUI(Text User Interface)模式的高效使用方法,以及在实际使用中需要避免的常见陷阱。通过本文的学习,你将掌握OpenClaw命令行的精髓,提升工作效率。

一键难忘的博客 1691

Swagger2简单使用教程

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

M丶Rock 1万+

书旗app字符串加密分析

本文案例是对书旗app搜索接口的请求密文进行分析和逆向。

李玺 3156

Swagger简单使用

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

qq_40833874的博客 7991

Python 爬虫实战:美团大众点评餐厅数据爬取与分析

本文摘要:美团/大众点评餐厅数据爬虫实战指南 本文详细介绍了如何开发一个完整的餐厅数据爬虫系统,涵盖从环境配置到数据可视化的全流程。主要内容包括: 项目目标:爬取餐厅基本信息(名称、评分、价格等)及详情数据,支持市场分析和商业决策 技术方案:使用Python生态工具(Requests、Playwright、Pandas等)构建爬虫系统 核心挑战:破解大众点评的字体反爬机制和美团的API签名验证 实现细节:提供完整的代码示例,包括字体解析、签名生成、请求重试等关键功能 数据应用:支持将结果导出为CSV/Exc

u014481728的博客 319

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Swagger使用简介

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

Ramboll的博客 1553

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

官网https。

Ajekseg的博客 2964

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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、付费专栏及课程。

余额充值