iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >第二章:Swagger2
  • 136
分享到

第二章:Swagger2

javaspringbootmybatis文档资料 2023-10-08 09:10:43 136人浏览 八月长安
摘要

目录 背景介绍 什么是Swagger2 常用注解 SpringBoot整合Swagger2 生产环境下屏蔽Swagger2 修改Swagger2配置类 修改application.yml 使用maven package打包测试 运行测试

目录

背景介绍

什么是Swagger2

常用注解

SpringBoot整合Swagger2

生产环境下屏蔽Swagger2

修改Swagger2配置类

修改application.yml

使用maven package打包测试

运行测试


背景介绍

在团队开发中,一个好的 api 文档不但可以减少大量的沟通成本,还可以帮助一位新人快速上手业务。传统的做法是由开发人员创建一份 RESTful API 文档来记录所有的接口细节,并在程序员之间代代相传。这种做法存在以下几个问题:

1)API 接口众多,细节复杂,需要考虑不同的Http请求类型、HTTP头部信息、HTTP请求内容等,想要高质量的完成这份文档需要耗费大量的精力;

2)难以维护。随着需求的变更和项目优化、推进,接口的细节在不断地演变,接口描述文档也需要同步修订,可是文档和代码处于两个不同的媒介,除非有严格的管理机制,否则很容易出现文档、接口不一致的情况;

Swagger2 的出现就是为了从根本上解决上述问题。它作为一个规范和完整的框架,可以用于生成、描述、调用和可视化 RESTful 风格的 WEB 服务:

  • 接口文档在线自动生成,文档随接口变动实时更新,节省维护成本;

  • 支持在线接口测试,不依赖第三方工具

什么是swagger2

Swagger2 是一个规范和完整的框架,用于生成、描述、调用和可视化Restful风格的web服务,现在我们使用Spring Boot 整合它。作用:

  • 接口的文档在线自动生成;

  • 功能测试;

常用注解

注解描述
@Api将类标记为 Swagger 资源。
@ApiImplicitParam表示 API 操作中的单个参数。
@ApiImplicitParams允许多个 ApiImplicitParam 对象列表的包装器。
@ApiModel提供有关 Swagger 模型的其他信息。
@ApiModelProperty添加和操作模型属性的数据。
@Apioperation描述针对特定路径的操作或通常是 HTTP 方法。
@ApiParam为操作参数添加额外的元数据。
@ApiResponse描述操作的可能响应。
@ApiResponses允许多个 ApiResponse 对象列表的包装器。
@Authorization声明要在资源或操作上使用的授权方案。
@AuthorizationScope描述 OAuth2 授权范围。

SpringBoot整合Swagger2

导入依赖

    io.springfox    springfox-swagger2    2.9.2                        swagger-models            io.swagger                com.GitHub.xiaoymin    swagger-bootstrap-ui    1.8.5    io.swagger    swagger-models    1.5.22

创建Swagger配置类

@Configuration//开启Swagger2@EnableSwagger2//配置生产环境下不可用  dev(开发)、test(测试)、prod(生产)@Profile({"dev","test"})public class Swagger2Configuration extends WebmvcConfigurationSupport {    //api接口包扫描路径    public static final String            SWAGGER_SCAN_BASE_PACKAGE = "com.lky.swagger2pro.controller";    //指定当前Swagger API文档版本    public static final String VERSION = "1.0.0";​        @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                // 接口文档的基本信息                .apiInfo(apiInfo())                .select()                // 方法需要有ApiOperation注解才能生存接口文档                //.apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_BASE_PACKAGE))                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                // 路径使用any风格                .paths(PathSelectors.any())                .build();    }​        private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("SpringBoot中使用Swagger2构建RestFul APIs")                .description("测试系统")                //.termsOfServiceUrl("http://www.**.com")                .version(VERSION)                .build();    }​    @Override    protected void addResourceHandlers(ResourceHandlerReGIStry registry) {        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");        registry.addResourceHandler("/webjars    @ApiModelProperty(value="书本编号")    private String bookid;​        @ApiModelProperty(value="书本名称")    private String bookname;​        @ApiModelProperty(value="书本价格")    private Double price;​        @ApiModelProperty(value="书本类型")    private String booktype;​    private static final long serialVersionUID = 1L;}

@ApiParam

作用在方法的参数上,用来描述接口的参数信息(一个参设置一个)

@ApiParam必须与@RequestParam@PathVariable@RequestHeader一起使用。

属性说明
name参数名称
value参数简单描述
defaultValue描述参数默认值
required是否为必传参数, false:非必传; true:必传
allowMultiple指定参数是否可以通过多次出现来接收多个值
hidden隐藏参数列表中的参数
example非请求体(body)类型的单个参数示例
examples@Example(value = @ExampleProperty(mediaType = “”, value = “”)) 参数示例,仅适用于请求体类型的请求

案例演示

@ApiOperation(value="新增书本信息1",notes="新增书本信息1")@PostMapping("/addBooks")public JSONResponseBody addBooks(            @ApiParam(name="bookName",value="bookName",required = true) @RequestParam("bookName") String bookName,            @ApiParam(name="price",value="price",required = true) @RequestParam("price") float price,            @ApiParam(name="bookType",value="bookType",required = true) @RequestParam("bookType") String bookType){      System.out.println("bookName="+bookName+",price="+price+",bookType="+bookType);    return new jsonResponseBody<>();}

生产环境下屏蔽Swagger2

为了保证接口文档的安全,禁用了生产环境的加载,具体说明请看:

参考地址:https://www.jianshu.com/p/fa3230ffb27c

一般生产环境是不能放开swagger的,这样接口暴露在外网很不安全!!!

一般生产环境是不能放开swagger的,这样接口暴露在外网很不安全!!!

一般生产环境是不能放开swagger的,这样接口暴露在外网很不安全!!!

修改Swagger2配置类

添加@Profile注解,指明在何种环境下可以使用Swagger2,一般情况下只有在开发(dev)和测试(test)环境下才可以使用Swagger2;而在生产(dev)环境下不能使用Swagger2。

@Configuration//开启Swagger2@EnableSwagger2//配置生产环境下不可用  dev(开发)、test(测试)、prod(生产)@Profile({"dev","test"})public class Swagger2Configuration extends WebMvcConfigurationSupport {        ...    @Override    protected void addResourceHandlers(ResourceHandlerRegistry registry) {        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");    }}

修改application.yml

修改application.yml文件,配置项目系统的运行环境(dev/test/prod)

spring:  #配置swagger2生产和测试环境不可用  profiles:    active: prod

使用Maven package打包测试

运行测试

打开CMD,跳转到target目录,输入命令:java -jar .\xxx.jar --spring.profiles.active=prod。可以直接打开jar包修改application.yml配置文件中spring.profiles.active属性切换运行环境,具体请参考以下配置:

开发环境:dev;

生产环境:prod;

测试环境:test;

 以上就是今天有关于Swagger2的介绍和使用!

来源地址:https://blog.csdn.net/m0_62246061/article/details/128530051

--结束END--

本文标题: 第二章:Swagger2

本文链接: https://www.lsjlt.com/news/425180.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 第二章:Swagger2
    目录 背景介绍 什么是Swagger2 常用注解 SpringBoot整合Swagger2 生产环境下屏蔽Swagger2 修改Swagger2配置类 修改application.yml 使用maven package打包测试 运行测试 ...
    99+
    2023-10-08
    java spring boot mybatis 文档资料
  • SEAM IN ACTION 第二章
    Putting seam-gen to workThis chapter covers■ Setting up a project with seam-gen■ Reverse engineering a database schema■ ...
    99+
    2023-06-03
  • Python 学习第二章
    本章内容 数据类型 数据运算 表达式 if ...else 语句 表达式 for 循环 表达式 while 循环 一、数据类型    在内存中存储的数据可以有多种类型。    在 Python 有五个标准的数据类型 Numbers ...
    99+
    2023-01-30
    第二章 Python
  • Python 第十二章 virtuale
    virtualenv在开发Python应用程序的时候,系统安装的Python3只有一个版本3.4,所有第三方包都会被pip安装到python3的site-packages目录下。如果我们同时开发多个Python程序,那么这些应用程序会公用一...
    99+
    2023-01-31
    十二章 Python virtuale
  • 第二章 什么是通道?
    本章主要介绍Mirth Connect开发框架,讲解运行的各个阶段,请大家仔细研读、理解,对后续章节帮助是很大的。开发者把前端与服务分开运行,服务框架集成了很多流行的服务及协议,从中我们也可以看出开发的大致原理。本章涉及到的知识点需要了解一...
    99+
    2023-06-03
  • Python学习系列 ( 第二章):Py
    一:Python的用户输入:  1.1 Python的输入 #!/usr/bin/env python # -*- coding: utf-8 -*- # Author:FlyFish #import getpass _username...
    99+
    2023-01-31
    第二章 系列 Python
  • 第十二章 Python文件操作
    12.1 open()open()函数作用是打开文件,返回一个文件对象。用法格式:open(name[, mode[, buffering[,encoding]]]) -> file objectname 文件名mode 模式,比如以...
    99+
    2023-01-31
    十二章 操作 文件
  • Python学习笔记—第二章—IPyth
    书目:Python(Unix和Linux系统管理指南)学习日期:20130807知识点总结:安装IPython:源码安装:tar zxvf ipython-0.13.2.tar.gz python setup.py install...
    99+
    2023-01-31
    第二章 学习笔记 Python
  • python列表和元组(第二章)
    1)列表和元组 python包涵6中内建的序列(列表,元组,字符串,Unicode字符串,buffer对象和xrange对象),本章讲常用的2中类型:列表和元组。 列表和元组的区别:列表可以修改,元组则不能。     2)索引 >&...
    99+
    2023-01-31
    第二章 列表 python
  • python 学习笔记第二章:安装pyt
       记得上次写python的学习笔记是三个月以前了,期间看过,也放下过,这次要坚持下来,一鼓作气,吃下python。    本文内容主要是根据《Python 简明教程》和自己的一些理解去写的,有问题,还请指出。   一、Linux 下安装...
    99+
    2023-01-31
    第二章 学习笔记 python
  • python核心编程2 第十二章 练习
    12–5. 使用 __import__().(a) 使用 __import__ 把一个模块导入到你的名称空间。 你最后使用了什么样的语法 (b) 和上边相同, 使用 __import__() 从指定模块导入特定的名字。 1 module...
    99+
    2023-01-30
    十二章 核心 python
  • 【书评:Oracle查询优化改写】第二章
    【书评:Oracle查询优化改写】第二章 BLOG文档结构图 在上一篇中http://blog.itpub.net/26736162/viewspace-1652985/,我们主要分析了一些单表查询...
    99+
    2024-04-02
  • 第二章 Roboguide安装及注册步骤详解
    Roboguide安装及注册步骤详解 一、安装前需要了解的1、软件获取途径2、版本说明3、系统软件及硬件需求 二、安装软件1、安装前准备工作2、软件安装步骤3、注册软件4、卸载软件5、转移...
    99+
    2023-09-26
    机器人
  • 第3章章节测试
     1,静态路由较之动态路由有哪2项优点? A 配置不容易出错 B 更安全,因为路由器不会通告路由 C 扩从网络时通常不会出现问题 D 没有计算开销 2,下列哪一项是对网络收敛的最佳描述? A 路由器从网络一端向另一端共享管理配置更改所需的时...
    99+
    2023-01-31
    测试 章节
  • 《python语言程序设计基础》(第二版)第二章课后习题参考答案
    第二章 Python程序实例解析 文章目录 2.1 温度转换2.2 汇率兑换2.3 绘制彩色蟒蛇2.4 等边三角形的绘制2.5 叠加等边三角形的绘制2.6 无角正方形的绘制2.7 六边形的绘制...
    99+
    2023-10-12
    python 开发语言
  • javacv从入门到精通——第二章:安装与配置
    下载javacv并安装 当我们以Maven项目为基础使用JavaCV时,需要在pom.xml文件中添加依赖项。可以在https://search.maven.org/搜索javacv,并添加以下依赖项: org.bytedeco...
    99+
    2023-09-09
    java 语音识别 opencv 音视频 视频编解码 Powered by 金山文档
  • 第一章 初识Python
    1.1 Python诞生至今 python的创始人为吉多·范罗苏姆(Guido van Rossum)荷兰人,1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。Pyth...
    99+
    2023-01-31
    Python
  • 第11章 WebShell检测
            WebShell就是以ASP、PHP、JSP或者CGI等网页文件形式存在的一种命令执行环境,也可以将其成为一种网页后门。黑客在入侵了一个网站后,通常会将ASP或者PHP后门文件与网站服务器Web目录下正常的网页文件混在一起,...
    99+
    2023-09-04
    服务器 php java
  • headfirst python第一章初
    headfirst python这本书非常不错,但是很多人没耐心读,出的速记卡,有用的尽管下载headfirst python第一章初识python速记卡.rar原书下载HeadfirstPython.pdf...
    99+
    2023-01-31
    headfirst python
  • 第一章 python入门
    阅读目录:         1.变量    2.用户与程序交互    3.基本数据类型    4.格式化输出    5.基本运算符    6.流程控制之if....else    7.流程控制之while循环    8.流程控制之for循...
    99+
    2023-01-30
    入门 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作