【springboot】集成swagger

1.简介

  本章介绍 SpringBoot2.1.9 集成 Swagger2 生成在线的API接口文档。

2. pom依赖:

  通过对比了swagger的几个版本,发现还是2.6.1问题最少

<!-- swagger2 依赖 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.6.1</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.6.1</version>
    </dependency>

3. swaggerconfig配置类:

3.1 SwaggerConfig 配置类
package cn.com.wjqhuaxia.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;

/**
 * @Description: swagger配置类
 */
@Configuration
// 开启swagger2
// 选择不同的环境启用 swagger 以下两种方式,推荐第一种
// @Profile({"dev","test"})
// @ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class SwaggerConfig {
	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.groupName("用户权限项目") // 设置项目名
				.apiInfo(apiInfo())
				.pathMapping("/")	 // 设置api根路径
				.select()				 // 初始化并返回一个API选择构造器
				.apis(RequestHandlerSelectors.basePackage("cn.com.wjqhuaxia"))	// swagger api扫描的路径
				.paths(PathSelectors.any())	// 设置路径筛选
				.build();					// 构建
	}

	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				.title("user-auth服务")
				.description("提供用户权限功能服务接口")
				.license("")
				.licenseUrl("")
				.termsOfServiceUrl("")
				.version("1.0.0")
				.build();
	}
}
3.2 配置说明 
一、Docket类的方法:
Docket groupName(String var):设置栏目名

Docket apiInfo(ApiInfo apiInfo):设置文档信息

Docket pathMapping(String path):设置api根路径

Docket protocols(Set<String> protocols):设置协议,Sets为com.goolge.common下的类,Sets.newHashSet("https","http")相当于new HashSet(){{add("https");add("http");}};

ApiSelectorBuilder select():初始化并返回一个API选择构造器

二、ApiSelectorBuilder类的方法:

ApiSelectorBuilder apis(Predicate<RequestHandler> selector):添加选择条件并返回添加后的ApiSelectorBuilder对象

ApiSelectorBuilder paths(Predicate<String> selector):设置路径筛选,该方法中含一句pathSelector = and(pathSelector, selector);表明条件为相与

RequestHandlerSelectors类的方法:

Predicate<RequestHandler> any():返回包含所有满足条件的请求处理器的断言,该断言总为true

Predicate<RequestHandler> none():返回不满足条件的请求处理器的断言,该断言总为false

Predicate<RequestHandler> basePackage(final String basePackage):返回一个断言(Predicate),该断言包含所有匹配basePackage下所有类的请求路径的请求处理器

三、PathSelectors类的方法:

Predicate<String> any():满足条件的路径,该断言总为true

Predicate<String> none():不满足条件的路径,该断言总为false

Predicate<String> regex(final String pathRegex):符合正则的路径
3.3 对应图示

  对应以上3.1配置的简单图示

4. controller类api设置

4.1 controller配置
package cn.com.wjqhuaxia.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import cn.com.wjqhuaxia.dao.IUserDao;
import cn.com.wjqhuaxia.model.UserEntity;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping(value = "/user")
@Api(description = "用户管理接口")
public class UserManageController {

	@Autowired
	private IUserDao userDao;

	@ApiOperation(value = "获取用户列表", notes = "获取用户列表")
	@RequestMapping(value = "/getUsers", method = RequestMethod.GET)
	public List<UserEntity> getUsers() {
		List<UserEntity> users=userDao.getAll();
		return users;
	}

	@ApiOperation(value = "根据用户id获取用户信息", notes = "根据用户id获取用户信息")
	@ApiImplicitParams({
			@ApiImplicitParam(name = "id", value = "用户标识", required = true, paramType = "path", dataType = "Long") })
    @RequestMapping(value = "/getUser/{id}", method = RequestMethod.GET)
    public UserEntity getUser(@PathVariable Long id) {
    	UserEntity user=userDao.getOne(id);
        return user;
    }

	@ApiOperation(value = "新增用户" ,  notes="新增用户")
    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String save(@RequestBody UserEntity user) {
    	userDao.insert(user);
    	return "用户添加成功!";
    }

	@ApiOperation(value = "修改用户" ,  notes="修改用户")
    @RequestMapping(value="update", method = RequestMethod.POST)
    public void update(@RequestBody UserEntity user) {
    	userDao.update(user);
    }

	@ApiOperation(value = "删除用户" ,  notes="删除用户")
    @RequestMapping(value="/delete/{id}", method = RequestMethod.GET)
    public void delete(@PathVariable("id") Long id) {
    	userDao.delete(id);
    }
}
4.2 配置说明
@Api()用于类; 表示标识这个类是swagger的资源
@ApiOperation()用于方法; 表示一个http请求的操作
@ApiParam()用于方法,参数,字段说明; 表示对参数的添加元数据(说明或是否必填等) 【暂时没用,当前使用[email protected]】
@ApiIgnore()用于类,方法,方法参数 表示这个方法或者类被忽略
@ApiImplicitParam() 用于方法 表示单独的请求参数
@ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam
4.3 图示

5. 实体类配置

5.1 实体类
/**
 * 用户对象
 * @author wjqhuaxia
 */
@ApiModel(value="UserEntity", description="用户对象")
public class UserEntity implements Serializable {

	private static final long serialVersionUID = 1L;
	@ApiModelProperty(value="用户id",name="id",example="1")
	private Long id;
	@ApiModelProperty(value="用户名",name="userName",example="mao2080")
	private String userName;
	@ApiModelProperty(value="密码",name="passWord",example="123456")
	private String passWord;
	@ApiModelProperty(value="性别",name="userSex",example="MAN")
	private UserSexEnum userSex;
	@ApiModelProperty(value="昵称",name="nickName",example="天际星痕")
	private String nickName;

	....get/set方法略。

}
5.2 配置说明
@ApiModel()用于类 表示对类进行说明,用于参数用实体类接收
@ApiModelProperty()用于方法,字段 表示对model属性的说明或者数据操作更改
5.3 简单图示

6. 测试:

访问http://localhost:8080/swagger-ui.html
注意: 访问路径有配置工程名的带上工程名,避免404。此处未配置工程名。

参考:

  https://blog.csdn.net/cp026la/article/details/86501095

  https://www.cnblogs.com/mao2080/p/9021714.html

  https://blog.csdn.net/z28126308/article/details/71126677

原文地址:https://www.cnblogs.com/wjqhuaxia/p/12113442.html

时间: 2024-10-06 12:00:39

【springboot】集成swagger的相关文章

SpringBoot 集成 Swagger

Swagger官网 什么是Swagger Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现 Swagger 文件可以在许多不同的平台上从代码注释中自动生成 Swagger 有一个强大的社区 依赖导入 <!-- Swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId&

SpringBoot集成Swagger,Postman,newman,jenkins自动化测试.

环境:Spring Boot,Swagger,gradle,Postman,newman,jenkins SpringBoot环境搭建. Swagger简介 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. 一.SpringBoot集成Swagger 1.build.gradle增加swagger相关jar包,maven项目同理. 2.增加SwaggerConfig配置文件. 前两步完成,访问http://localhost:8080/demoService/swa

SpringBoot集成Swagger

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

springboot 集成swagger

了解到swagger 就记录下用法 pom.xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>io.springfox</gr

Spring Boot 集成Swagger

Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单. 更多关于Swagger的作用,相信大家百度一下能了解的更全面,本文以SpringBoot中集成Swagger为例做介绍说明. 一.修改pom.xml,添加maven依赖 <!-- Swagger

springboot集成swagger2构建RESTful API文档

在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可以在访问接口上,直接添加注释 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先引入swagger2的jar包,pom文件引入依赖如下: <dependency> <groupId>io.springfox&

(转) SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

企业级 SpringBoot 教程 (十一)springboot集成swagger2,构建优雅的Restful API

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

JAVA springboot微服务b2b2c电子商务系统-springboot集成swagger2,构建优雅的Restful API(十一)

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

springboot之swagger快速启动

springboot之swagger快速启动 简介 介绍 可能大家都有用过swagger,可以通过ui页面显示接口信息,快速和前端进行联调. 没有接触的小伙伴可以参考官网文章进行了解下demo页面. 多应用 当然在单个应用大家可以配置SwaggerConfig类加载下buildDocket,就可以快速构建好swagger了. 代码大致如下: /** * Swagger2配置类 * 在与spring boot集成时,放在与Application.java同级的目录下. * 通过@Configura