SpringMVC 中配置 Swagger 插件的教程(分享)

一、简介

Swagger的目标是为REST API定义一个与语言无关的标准接口,允许用户发现和理解计算机服务的功能,而无需访问源代码。当通过Swagger正确定义时,用户可以用最少量的实现逻辑理解远程服务并与之交互。类似于低级编程所做的接口。

二、实现步骤

1、添加 Maven 依赖

<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger2</artifactId>
 <version>2.6.1</version>
</dependency>

2、Swagger 配置类

@Configuration
@EnableSwagger2
//@ComponentScan(basePackageClasses = JgBjBaseInfoCompanyApi.class) 或者
@ComponentScan(basePackages = "com.summersoft.ts.schedule.supervision.controller") //要扫描的包路径
public class SwaggerConfig {

 @Bean
 public Docket swaggerSpringMvcPlugin() {
 return new Docket(DocumentationType.SWAGGER_2)
  .apiInfo(apiInfo())
  .select() //选择哪些路径和api会生成document
  .apis(RequestHandlerSelectors.any())//对所有Api进行监控
  .paths(PathSelectors.any()) //对所有路径进行扫描
  .build();
 }

 /**
 * api具体信息
 *
 * @return
 */
 private ApiInfo apiInfo() {
 ApiInfo apiInfo = new ApiInfo(
  "对接服务平台API文档", //标题
  "", //描述
  "1.0", //版本
  "",
  "",
  "", //签名
  "" //签名链接
 );
 return apiInfo;
 }
}

3、Swagger 注解

Swagger 会去扫描SwaggerConfig 中配置的包路径下的带有Swagger 注解的类文件,并最后生成一串扫描的Json文件...

Swagger 注解说明:https://github.com/swagger-api/swagger-core/wiki/Annotations#apimodel

@Api :用在类上,说明该类的作用,需要说明的是较老的版本用的value表示扫描生成的类名,1.5后要用tag 表示类名

@Api(tag= "UserController", description = "用户相关api")

@ApiOperation :用在方法上,说明方法的作用

@ApiOperation(value = "查找用户", notes = "查找用户", httpMethod = "GET", produces =

MediaType.APPLICATION_JSON_UTF8_VALUE)

@ApiParam :用在参数列表中,表明参数的含义

@ApiParam(value = "创建或更新距离当前时间(月)") Integer time

@ApiImplicitParams :用在方法上包含一组参数说明

@ApiImplicitParam :用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

paramType:参数放在哪个地方

header–>请求参数的获取:@RequestHeader

query–>请求参数的获取:@RequestParam

path(用于restful接口)–>请求参数的获取:@PathVariable

body(不常用)

form(不常用)

name:参数名

dataType:参数类型

required:参数是否必须传

value:参数的意思

defaultValue:参数的默认值

@ApiImplicitParams({

@ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
})

@ApiResponses :用于表示一组响应

@ApiResponse :用在@ApiResponses中,一般用于表达一个错误的响应信息

code:数字,例如400

message:信息,例如”请求参数没填好”

response:抛出异常的类

@ApiResponses(value = {
@ApiResponse(code = 400, message = "No Name Provided")
})

@ApiModel :描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)

@ApiModel(value = "用户实体类")

@ApiModelProperty :描述一个model的属性

@ApiModelProperty(value = "登录用户")

三、swagger-ui

有了上面的配置信息,Swagger 就会帮我们扫描出所有的 类信息,并生成一个JSON文件。想让JSON文件友好的展示在人们面前,需要用到 swagger-ui 这个组件:

1、 swagger-ui 使用说明:https://swagger.io/docs/swagger-tools/

2、下载 swagger-ui,在webapp 目录下新建一个swagger目录,把 dist 目录下的文件,放入swagger目录下,并修改index.html文件,默认是从连接 http://petstore.swagger.io/v2/swagger.json 获取 API 的 JSON,这里需要将url值修改为 http://{ip}:{port}/{projectName}/api-docs的形式,{}中的值根据自身情况填写。

比如我的url值为:

http://localhost:8080/vouchers/api-docs 。另外,需要配置一下Spring MVC的资源放行:<mvc:resources mapping="/swagger/**" location="/swagger/"/>

tips:默认的dist 目录下没有这么多文件,swagger-ui 可以自定义配置,这个是我们项目中使用的,不用改项目名,项目名动态获取:https://files.cnblogs.com/files/jmcui/swagger.zip

3、swagger-ui 怎么对展示的接口排序:

apisSorter :对API /标签列表应用排序。它可以是'alpha'(按名称排序)或函数(请参阅Array.prototype.sort()以了解sort函数的工作原理)。默认是服务器返回的顺序不变。

operationsSorter :对每个API的操作列表应用一个排序。它可以是'alpha'(按字母数字排序),'method'(按HTTP方法排序)或函数(参见Array.prototype.sort()来知道sort函数的工作方式)。默认是服务器返回的顺序不变。

以上这篇SpringMVC 中配置 Swagger 插件的教程(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • SpringMVC集成Swagger实例代码
  • 详谈Springfox与swagger的整合使用
  • SpringMVC和Swagger整合方法
(0)

相关推荐

  • SpringMVC和Swagger整合方法

    描述 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. 总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法.参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步.Swagger 让部署管理和使用功能强大的 API 从未如此简单. 配置 1.引入相关jar包: <dependency> <groupId>io.springfox</groupId> <artifactId>

  • 详谈Springfox与swagger的整合使用

    一.前言 让我们先理一下springfox与swagger的关系. swagger是一个流行的API开发框架,这个框架以"开放API声明"(OpenAPI Specification,OAS)为基础,对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的项目(包括设计.编码和测试,几乎支持所有语言). OAS本身是一个API规范,它用于描述一整套API接口,包括一个接口是GET还是POST请求啊,有哪些参数哪些header啊,都会被包括在这个文件中.它在设计的时候通常是YAML

  • SpringMVC集成Swagger实例代码

    此前写过一个关于SpringBoot集成Swagger的帖子,因为有的项目是SpringMVC的,所以也简单整理了一下,基本一致. 本例使用的是spring 4.1.6版本 1.添加POM依赖 <!-- Jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <vers

  • SpringMVC 中配置 Swagger 插件的教程(分享)

    一.简介 Swagger的目标是为REST API定义一个与语言无关的标准接口,允许用户发现和理解计算机服务的功能,而无需访问源代码.当通过Swagger正确定义时,用户可以用最少量的实现逻辑理解远程服务并与之交互.类似于低级编程所做的接口. 二.实现步骤 1.添加 Maven 依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifact

  • vscode中配置LeetCode插件的教程(愉快刷题)

    大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器.但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决.所以写这篇文章除了给大家安利这个好用的插件之外,也是为了帮助更多的同学避免踩坑. 简介vscode vscode在工业界鼎鼎大名,被誉为微软少有的拿得出手的精品(逃).原本是不想过多赘述的,但是鉴于许多粉丝还是正在上学的萌新,所以花点笔墨简单介绍一下. vscode是微软开发的编辑器,严格说起来它并不是一个IDE,只是一个编辑器.但是由于它支持嵌

  • Eclipse中配置Maven的图文教程

    一. 安装Maven 下载地址:http://maven.apache.org/检查 JAVA_HOME 环境变量. Maven 是使用 Java 开发的,所以必须知道当前系统环境中 JDK 的安装目录. 解压 Maven 的核心程序 将 apache-maven-3.6.3-bin.zip 解压到一个非中文无空格的目录下配置环境变量. 查看 Maven 版本信息验证安装是否正确 二.设置Maven的配置文件 1. 配置本地仓库 Maven 的核心程序并不包含具体功能,仅负责宏观调度.具体功能由

  • Python中Scrapy框架的入门教程分享

    目录 前言 安装Scrapy 创建一个Scrapy项目 创建一个爬虫 运行爬虫 结论 前言 Scrapy是一个基于Python的Web爬虫框架,可以快速方便地从互联网上获取数据并进行处理.它的设计思想是基于Twisted异步网络框架,可以同时处理多个请求,并且可以使用多种处理数据的方式,如提取数据.存储数据等. 本教程将介绍如何使用Scrapy框架来编写一个简单的爬虫,从而让您了解Scrapy框架的基本使用方法. 安装Scrapy 首先,您需要在您的计算机上安装Scrapy框架.您可以使用以下命

  • PyCharm中配置PySide2的图文教程

    一.准备工作 1. 安装 Pyside2 1.1 使用pip安装Pyside2 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyside2 1.2 查看安装结果 pip freeze 2. 确定Pyside2安装位置 重复安装以获取安装位置,一般为Python安装目录下. pip install Pyside2 二.在 PyCharm中设置自定义工具 在PyCharm中自定义两个工具以便开发时使用. 步骤:File->Setti

  • IntelliJ IDEA中配置Tomcat超详细教程

    目录 在IntelliJ IDEA中配置Tomcat 一.下载及安装Tomcat 二.配置Tomcat环境变量 三.在IntelliJ IDEA中配置Tomcat 在IntelliJ IDEA中配置Tomcat 一.下载及安装Tomcat 1.首先进入Tomcat官网:http://tomcat.apache.org/,在Download中选择需要下载的版本,然后根据电脑系统选择64位/32位的zip,开始下载(要记住安装路径!). ps:有zip和exe两种格式的,zip(64-bit Win

  • 20个非常棒的 jQuery 幻灯片插件和教程分享

    滑块和幻灯片效果是常用的内容展示方式之一,这是一种在有限的网页空间内展示系列项目时非常好的方法.今天这篇文章就与大家分享20个非常棒的 jQuery 幻灯片插件和教程. > Slider Gallery with jQuery Create an Image Rotator with Description (CSS/jQuery) Create a Slick and Accessible Slideshow Using jQuery Simple JQuery Image Slide Sho

  • SpringMVC中@ModelAttribute注解的使用教程

    前言 @ModelAttribute最主要的作用是将数据添加到模型对象中,用于视图页面展示时使用. @ModelAttribute等价于 model.addAttribute("attributeName", abc); 但是根据@ModelAttribute注释的位置不同,和其他注解组合使用,致使含义有所不同.具体区别如下: 1.@ModelAttribute注释方法 例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被

  • 详谈Servlet和Filter的区别以及两者在Struts2和Springmvc中的应用

    在javaweb开发中,Servlet和Filter是很重要的两个概念,我们平时进行javaweb开发的时候,会经常和Servlet和Filter打交道,但我们真的了解Servlet和Filter吗? 一.基本概念 Servlet: Servlet 是在WEB服务器上运行的程序.这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务. 服务器上需要一些程序,

  • Springmvc中的转发重定向和拦截器的示例

    本文介绍了Springmvc中的转发重定向和拦截器的示例,分享给大家,具体如下: 可变参数在设计方法时,使用 数据类型... 来声明参数类型,例如: public static void function(int... numbers) 在实现方法体时,可变参数是作为数组来处理 public class Test{ public static void main(String[] args){ System.out.println(Test.sum(1,2,3)); System.out.pri

随机推荐