springboot+swagger集成
一、swagger介绍
Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagger的方法和一些常见问题。如果想深入分析项目源码,了解更多内容,见参考资料。
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单
二、示例程序
1、新建maven工程springboot-swagger
2、引入springboot和swagger2的依赖
<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.springboot.swagger</groupId>
<artifactId>springboot-swagger</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-swagger</name>
<description>springboot-swagger</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies> </project>
3、新建springboot主运行类:
package com.springboot.swagger; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class Application { public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
4、创建swagger配置类
package com.springboot.swagger.config; 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; @Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket buildDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(ApiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.springboot.swagger.controller"))//该包下的类将会自动生成文档
.paths(PathSelectors.any())
.build();
}
private ApiInfo ApiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot+swagger2集成示例")
.contact("波神")
.version("1.0")
.build();
}
}
5、创建实体类
为Model(JSON)添加注释
package com.springboot.swagger.model; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; @ApiModel("User(用户模型)")
public class User { @ApiModelProperty("用户ID")
private Long id;
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("年龄")
private Integer age; public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
6、创建controller
package com.springboot.swagger.controller; import java.util.HashMap;
import java.util.Map; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import com.springboot.swagger.model.User; @RestController
@RequestMapping("/user")
@Api(value = "用户服务",description = "提供RESTful风格API的用户的增删改查服务")
public class UserController {
//模拟DAO层
private final Map<Long, User> repository = new HashMap<Long, User>(); @PostMapping("/add1")
@ApiOperation("添加用户")
public Boolean add1(@RequestBody User user) {
repository.put(user.getId(), user);
return true;
} @PostMapping("/add2")
@ApiOperation("添加用户")
public Boolean add2(@ApiParam("用户信息")@RequestBody User user) {
repository.put(user.getId(), user);
return true;
} @DeleteMapping("/{id}")
@ApiOperation("通过ID删除用户")
public Boolean delete(@PathVariable Long id) {
repository.remove(id);
return true;
} @PutMapping
@ApiOperation("更新用户")
public Boolean update(@RequestBody User user) {
repository.put(user.getId(), user);
return true;
} @GetMapping("/{id}")
@ApiOperation("通过ID查询用户")
public User findById(@PathVariable Long id) {
return repository.get(id);
}
}
@Api
注解用来表述该服务的信息,如果不使用则显示类名称.@ApiOperation
注解用于表述接口信息@ApiParam
注解用于描述接口的参数
上面之所以有add1和add2是为了说明,如果都是PostMapping类型,前端页面怎么来区分调用。
现在我们来启动它,执行mvn spring-boot:run
,或直接运行Application.main()
。
如是eclipse,可以右键项目,然后run as->java Application,在弹出来的对话框如下:
选择项目的Application然后选择ok
可以看到程序启动如下:
2017-05-09 16:44:51.457 INFO 39650 --- [ main] s.w.ClassOrApiAnnotationResourceGrouping : Group for method findById was 用户服务
2017-05-09 16:44:51.460 INFO 39650 --- [ main] s.w.ClassOrApiAnnotationResourceGrouping : Group for method findById was 用户服务
2017-05-09 16:44:51.464 INFO 39650 --- [ main] s.d.schema.ModelContextKeyGenerator : Cache Key Generated: java.lang.Boolean(true)
2017-05-09 16:44:51.464 INFO 39650 --- [ main] s.d.spring.web.caching.CachingAspect : Caching aspect applied for cache models with key java.lang.Boolean(true)
2017-05-09 16:44:51.465 INFO 39650 --- [ main] s.d.schema.ModelContextKeyGenerator : Cache Key Generated: java.lang.Boolean(true)
2017-05-09 16:44:51.465 INFO 39650 --- [ main] s.d.spring.web.caching.CachingAspect : Caching aspect applied for cache modelDependencies with key java.lang.Boolean(true)
2017-05-09 16:44:51.465 INFO 39650 --- [ main] s.d.schema.ModelContextKeyGenerator : Cache Key Generated: com.springboot.swagger.model.User(false)
2017-05-09 16:44:51.465 INFO 39650 --- [ main] s.d.spring.web.caching.CachingAspect : Caching aspect applied for cache models with key com.springboot.swagger.model.User(false)
2017-05-09 16:44:51.466 INFO 39650 --- [ main] s.d.schema.ModelContextKeyGenerator : Cache Key Generated: com.springboot.swagger.model.User(false)
2017-05-09 16:44:51.466 INFO 39650 --- [ main] s.d.spring.web.caching.CachingAspect : Caching aspect applied for cache modelDependencies with key com.springboot.swagger.model.User(false)
2017-05-09 16:44:51.466 INFO 39650 --- [ main] s.d.spring.web.OperationsKeyGenerator : Cache key generated: /user.com.springboot.swagger.controller.UserController.update.DefaultGenericTypeNamingStrategy
2017-05-09 16:44:51.475 INFO 39650 --- [ main] s.d.spring.web.caching.CachingAspect : Caching aspect applied for cache operations with key /user.com.springboot.swagger.controller.UserController.update.DefaultGenericTypeNamingStrategy
2017-05-09 16:44:51.480 INFO 39650 --- [ main] s.w.ClassOrApiAnnotationResourceGrouping : Group for method update was 用户服务
2017-05-09 16:44:51.483 INFO 39650 --- [ main] s.w.ClassOrApiAnnotationResourceGrouping : Group for method update was 用户服务
2017-05-09 16:44:51.658 INFO 39650 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-05-09 16:44:51.676 INFO 39650 --- [ main] com.springboot.swagger.Application : Started Application in 9.276 seconds (JVM running for 9.745)
启动成功后,访问http://localhost:8080/swagger-ui.html,便可以看到我们刚才构建的计算服务的API文档了。
点开上面的,add1,点击下图当中的右边黄色部分,可以对参数进行修改。
然后点击“try it out”可以进行测试。执行结果如下所示:
springboot+swagger集成的更多相关文章
- Swagger详解(SpringBoot+Swagger集成)(转)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ai_miracle/article/de ...
- 【转】Swagger详解(SpringBoot+Swagger集成)
Swagger-API文档接口引擎Swagger是什么 Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器 ...
- SpringBoot系列十一:SpringBoot整合Restful架构(使用 RestTemplate 模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot整合Restful架构 2.背景 Spring 与 Restful 整合才是微架构的核心,虽然在整 ...
- springboot+swagger接口文档企业实践(上)
目录 1.引言 2.swagger简介 2.1 swagger 介绍 2.2 springfox.swagger与springboot 3. 使用springboot+swagger构建接口文档 3. ...
- swagger集成遇到的坑一个
SpringBoot项目集成swagger项目遇到一个问题: 访问swagger-ui.html 没有加载到数据,也没有加载到页面的html和css资源 除了 1.添加swagger的pom依赖 2. ...
- SpringBoot + Swagger Demo
Swagger是什么? Swagger 是一个规范且完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. Swagger 的目标是对 REST API 定义一个标准且和语 ...
- springboot elasticsearch 集成注意事项
文章来源: http://www.cnblogs.com/guozp/p/8686904.html 一 elasticsearch基础 这里假设各位已经简单了解过elasticsearch,并不对es ...
- SpringBoot+Swagger整合API
SpringBoot+Swagger整合API Swagger:整合规范的api,有界面的操作,测试 1.在pom.xml加入swagger依赖 <!--整合Swagger2配置类--> ...
- Springboot Application 集成 OSGI 框架开发
内容来源:https://www.ibm.com/developerworks/cn/java/j-springboot-application-integrated-osgi-framework-d ...
随机推荐
- Debian 7.0.0 安装教程图解
Debian7.0.0的安装镜像文件有3个DVD,安装基本系统只用到第一个镜像文件,即DVD1,其它镜像文件是附带的软件包,下面是安装方法 一.说明: Debian7.0.0的安装镜像文件有3个D ...
- 【UVA】11464 Even Parity(枚举子集)
题目 传送门:QWQ 分析 标准的套路题. 枚举第一行,接着根据第一行递推下面的行. 时间复杂度$ O(2^n \times n^2) $ 代码 #include <bits/stdc++.h& ...
- JAVA构造函数在超类和子类调用注意事项
1.构造函数: 当子类继承一个父类时,构造子类时需要调用父类的构造函数,存在三种情况 (1),父类无构造函数或者一个无参数构造函数,子类若无构造函数或者有无参数构造函数,子 ...
- C#枚举(enum)、常量(const)和readonly
const修饰的是(类)静态常量,,其值是在编译期间确定的readonly修饰的是动态常量. A.C#中的const和readonly的区别 C#中定义常量有两种方式,一种叫做静态常量,使用“cons ...
- 【转】java与.net比较学习系列(3) 基本数据类型和类型转换
原文地址:https://www.cnblogs.com/mcgrady/p/3397874.html 阅读目录 一,整数类型 二,浮点数类型 三,字符类型 四,布尔类型 五,类型转换之自动转换 六, ...
- mysql数据库忘记密码时如何登录
1.打开cmd命令提示符,进入上一步mysql.exe所在的文件夹即: 2.输入命令 mysqld --skip-grant-tables 回车,此时就跳过了mysql的用户验证 3.然后直接输入 ...
- git commit时候出现的问题
git commit 提交的时候,出现*** Please tell me who you are. git config --global ...问题 1 $ git commit -a -m 'v ...
- 【CentOS 6.5】 安装VNCServer及配置,注销处理
如果没有安装VNCServer,只有在机器上登录进桌面后才可以通过VNC连接,否则连不上... 安装: yum install tigervnc-server 运行并设置密码: vncserver ...
- Excel中通过向导方式插入chart
1.插入图表则主要是操作ChartObject对象和Chart对象. Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet); Workshe ...
- Splash Screen 加载窗体 [not finished]
对于windows开 发人员来说在打开VS开发工具时,总是先呈现一个SplashScreen界面,登上几秒钟后才打开VS的主界面.这样的效果一般是在主界面需要加载大量 资源,为避免主界面变成“死”界面 ...