SpringBoot集成swagger的实例代码

Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内容,见参考资料。

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

对于搬砖的同学来说,写接口容易,写接口文档很烦,接口变动,维护接口文档就更更更烦,所以经常能发现文档与程序不匹配。

等过一段时间就连开发者也蒙圈了

Swagger2快速方便的解决了以上问题。一个能与Spring MVC程序配合组织出强大RESTful API文档的新宠儿。

下面直接上代码

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zhongxin.wealth</groupId>
  <artifactId>wealthweb</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>wealthweb</name>
  <description>Demo project for Spring Boot</description>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>2.7.0</version>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.7.0</version>
    </dependency>
  </dependencies>
</project>

  创建配置类

package com.zhongxin.wealth.apiConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
 * Created by DingYS on 2017/12/8.
 */
@Configuration
@EnableSwagger2
public class Swagger2 {
  @Bean
  public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .select()
        .apis(RequestHandlerSelectors.basePackage("com.zhongxin.wealth.web"))
        .paths(PathSelectors.any())
        .build();
  }
  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("廊坊委贷大数据统计结果输出接口")
        .version("1.0")
        .build();
  }
}

  controller编写

package com.zhongxin.wealth.web;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by DingYS on 2017/12/7.
 */
@RestController
@RequestMapping("/hello")
public class HelloWordController {
  @ApiOperation(value="测试接口", notes="这只是一个测试controller调用的接口,没有任何的业务逻辑")
  @RequestMapping(value = {"/test"},method = RequestMethod.GET)
  public String testHello(){
    return "hello";
  }
}

  代码完成,准备看效果

点击Try it out!

是不是很详细,很高大上。

注:集成过程中刚开始用的swagger2.2.2版本,会在首页出现一个error的错误提醒

{“schemaValidationMessages”:[{“level”:”error”,”message”:”Can't read from file http://127.0.0.1:8888/v2/api-docs"}]}

  但是浏览器访问:http://127.0.0.1:8888/v2/api-docs 又能获取 结果

{“swagger”:”2.0”,”info”:{“version”:”1.0”,”title”:”廊坊委贷大数据统计结果输出接口”,”contact”:{},”license”:{}},”host”:”127.0.0.1:8888”,”basePath”:”/“,”tags”:[{“name”:”hello-word-controller”,”description”:”Hello Word Controller”}],”paths”:{“/hello/test”:{“get”:{“tags”:[“hello-word-controller”],”summary”:”测试接口”,”description”:”这只是一个测试controller调用的接口,没有任何的业务逻辑”,”operationId”:”testHelloUsingGET”,”consumes”:[“application/json”],”produces”:[“/“],”responses”:{“200”:{“description”:”OK”,”schema”:{“type”:”string”}},”401”:{“description”:”Unauthorized”},”403”:{“description”:”Forbidden”},”404”:{“description”:”Not Found”}}}}}}

  具体原因本人不明,换成2.7.0版本以后没在出现。

总结

以上所述是小编给大家介绍的SpringBoot集成swagger的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • 详解如何在SpringBoot里使用SwaggerUI
  • Spring Boot集成Swagger2项目实战
  • Spring Boot 项目中使用Swagger2的示例
  • Springboot中集成Swagger2框架的方法
  • SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)
  • springboot + swagger 实例代码
  • spring-boot 禁用swagger的方法
时间: 2017-12-07

spring-boot 禁用swagger的方法

在使用spring-boot开发的时候,我们很多时候会使用swagger作为api文档输出.可以在UI界面上看到api的路径,参数等等. 当然,作为开发环境是很方便的,但是上生产环境的时候,我们需要把swagger禁掉.怎么通过配置文件的方法来禁用swagger呢? 代码如下: import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cont

Springboot中集成Swagger2框架的方法

摘要:在项目开发中,往往期望做到前后端分离,也就是后端开发人员往往需要输出大量的服务接口,接口的提供方无论是是Java还是PHP等语言,往往会要花费一定的精力去写接口文档,比如A接口的地址.需要传递参数情况.返回值的JSON数据格式以及每一个字段说明.当然还要考虑HTTP请求头.请求内容等信息.随着项目的进度快速高速的迭代,后端输出的接口往往会面临修改.修复等问题,那也意味着接口文档也要进行相应的调整.接口文档的维护度以及可读性就大大下降. 既然接口文档需要花费精力去维护,还要适当的进行面对面交

Spring Boot 项目中使用Swagger2的示例

本文介绍了Spring Boot 项目中使用Swagger2的示例,分享给大家,具体如下: 添加Swagger2依赖 在pom.xml中加入Swagger2的依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.2.2</version> </dependency&g

springboot + swagger 实例代码

swagger用于定义API文档. 好处: 前后端分离开发 API文档非常明确 测试的时候不需要再使用URL输入浏览器的方式来访问Controller 传统的输入URL的测试方式对于post请求的传参比较麻烦(当然,可以使用postman这样的浏览器插件) spring-boot与swagger的集成简单的一逼 1.项目结构 和上一节一样,没有改变. 2.pom.xml 引入了两个jar. <dependency> <groupId>io.springfox</groupId

SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)

pom.xml增加依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <

Spring Boot集成Swagger2项目实战

一.Swagger简介 上一篇文章中我们介绍了Spring Boot对Restful的支持,这篇文章我们继续讨论这个话题,不过,我们这里不再讨论Restful API如何实现,而是讨论Restful API文档的维护问题. 在日常的工作中,我们往往需要给前端(WEB端.IOS.Android)或者第三方提供接口,这个时候我们就需要给他们提供一份详细的API说明文档.但维护一份详细的文档可不是一件简单的事情.首先,编写一份详细的文档本身就是一件很费时费力的事情,另一方面,由于代码和文档是分离的,所

详解如何在SpringBoot里使用SwaggerUI

Swagger Swagger是一种和语言无关的规范和框架,用于定义服务接口,主要用于描述RESTful的API.它专注于为API创建优秀的文档和客户端库.支持Swagger的API可以为API方法生成交互式的文档,让用户可以通过以可视化的方式试验,查看请求和响应.头文件和返回代码,从而发现API的功能. swagger用于定义API文档. 好处: 前后端分离开发 API文档非常明确 测试的时候不需要再使用URL输入浏览器的方式来访问Controller 传统的输入URL的测试方式对于post请

详解如何在Vue里建立长按指令

您是否曾想过按住按钮几秒钟才能在Vue应用程序中执行某个功能? 您是否曾想在应用程序上创建一个按钮,通过按一次(或按住按钮的整个输入)来清除单个输入? 如果你曾有过这些想法,很好,我也是.那么恭喜你看到了这篇文章. 本文将解释如何通过按下(或按住)按钮来执行功能和删除输入. 首先,我将解释如何在VanillaJS中实现这一目标.然后,为它创建一个Vue指令. 那么,让我们开始吧. 原理 为了实现长按,用户需要按住按钮几秒钟. 要在代码中复制它,我们需要在按下鼠标"单击"按钮时监听,启动

详解如何在Javascript中使用Object.freeze()

Object.freeze() Object.freeze() 方法可以冻结一个对象.一个被冻结的对象再也不能被修改:冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性.可配置性.可写性,以及不能修改已有属性的值.此外,冻结一个对象后该对象的原型也不能被修改.freeze() 返回和传入的参数相同的对象 用法 const objectExample = { prop1: 20, prop2: "羊先生" }; // 默认情况下,我们可以根据需

详解如何在VMware workstation 14 pro(虚拟机)上安装系统

本文介绍了详解如何在VMware workstation 14 pro(虚拟机)上安装系统,分享给大家,具体如下: 点击创建新的虚拟机 选择稍后安装系统,否则你会陷入无穷的简易安装等待中. 我这次安装的系统为win10 安装地址可以自己选择 接着可以按照推荐的一直点下去 之后点击编辑虚拟机设置 选择自己下载好的win10映像文件启动 之后便可开启虚拟机 一旦进去立即按回车否则就会出现如下画面(但是有办法解决,不要马上关) 这时你就要按Esc才能安装,但是如果你一不小心又忘记点了,又会出现如下画面

详解如何用SpringBoot 2.3.0.M1创建Docker映像

1.发布 SpringBoot2.3.0.M1刚刚发布,它带来了一些有趣的新特性,可以帮助您将SpringBoot应用程序打包到Docker映像中.在这篇博客文章中,我们将查看创建Docker映像的典型方式,并展示如何通过使用这些新特性来改进这些镜像 2.说明 SpringBoot 2.3.0.M1 暂时不支持Windows, 很鸡肋 暂时在Mac 和Linux 上运行良好 3.常见的Docker 运行方式 一般情况下,通过docker 运行springboot 是这样的 FROM openjd

详解如何在C#/.NET Core中使用责任链模式

最近我有一个朋友在研究经典的"Gang Of Four"设计模式.他经常来询问我在实际业务应用中使用了哪些设计模式.单例模式.工厂模式.中介者模式 - 都是我之前使用过,甚至写过相关文章的模式.但是有一种模式是我还没有写过文章,即责任链模式. 什么是责任链?# 责任链模式(之前我经常称之为命令链模式)是一种允许以使用分层方式"处理"对象的模式.在维基百科中的经典定义是 在面向对象设计中,责任链模式是一种由命令对象源及其一系列处理对象组成的设计模式.每个处理对象包含了

详解如何在Ubuntu 20.04上安装Xrdp服务器(远程桌面)

Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统.通过 RDP,你可以登录远程机器,并且创建一个真实的桌面会话,就像你登录本地机器一样. 这篇指南讲解如何在 Ubuntu 20.04 上安装和配置 Xrdp 服务器. 一.安装桌面环境 Ubuntu 服务器通常使用命令行进行管理,并且默认没有安装桌面环境.如果你正在运行 Ubuntu 桌面版,忽略这一步. 在 Ubuntu 源仓库有很多桌面环境供你选择.一个选择是安装 Gnome,它是 Ubuntu 20.0

详解如何在PyCharm控制台中输出彩色文字和背景

最近的话呢也是因为一些特殊的需求,所以要求在Pycharm控制台中输出彩色的文字和背景,也有同学问到我关于这个问题,之前百度其他人的关于这个操作,比较凌乱,那么我这里的话就写一篇博文来总结一下.其实的话呢,Python控制台中默认输出的字体应该是黑色,而背景呢则是白色. 那么,如何使PyCharm中输出的内容,有不同的背景色和字体颜色?其实非常的简单,我们只需要在print输出语句中进行一些简单的设置即可,在PyCharm控制台中设置字体和背景色,需要使用下面语法: \033[显示方式;前景色;

详解如何配置springboot跳转html页面

本文主要介绍了如何配置springboot跳转html页面,分享给大家,具体如下: 1.首先在pom文件中引入模板引擎jar包,即: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 2.在application.properties中

详解如何在pyqt中通过OpenCV实现对窗口的透视变换

窗口的透视变换效果    当我们点击Win10的UWP应用中的小部件时,会发现小部件会朝着鼠标点击位置凹陷下去,而且不同的点击位置对应着不同的凹陷情况,看起来就好像小部件在屏幕上不只有x轴和y轴,甚至还有一个z轴.要做到这一点,其实只要对窗口进行透视变换即可.下面是对Qt的窗口和按钮进行透视变换的效果: 具体代码    1.下面先定义一个类,它的作用是将传入的 QPixmap 转换为numpy 数组,然后用 opencv 的 warpPerspective 对数组进行透视变换,最后再将 nump