Java小强个人技术博客站点    手机版
当前位置: 首页 >> 框架 >> springBoot集成swagger2

springBoot集成swagger2

39090 框架 | 2021-3-23

Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

swagger.png

Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。

Swagger 的优势

支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。

提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。


Swagger使用的注解及其说明:

@Api:用在类上,说明该类的作用。
@ApiOperation:注解来给API增加方法说明。
@ApiImplicitParams : 用在方法上包含一组参数说明。
@ApiImplicitParam:用来注解来给方法入参增加说明。
参数:
   ·paramType:指定参数放在哪个地方
      ··header:请求参数放置于Request Header,使用@RequestHeader获取
      ··query:请求参数放置于请求地址,使用@RequestParam获取
      ··path:(用于restful接口),请求参数的获取:@PathVariable
      ··body:(不常用)
      ··form(不常用)
   ·name:参数名
   ·dataType:参数类型
   ·required:参数是否必须传(true | false)
   ·value:说明参数的意思
   ·defaultValue:参数的默认值
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
      ——code:数字,例如400
      ——message:信息,例如"请求参数异常!"
      ——response:抛出异常的类   
@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性


SpringBoot中Maven引入:

<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>



修改Controller增加注解:

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@Api(value = "用户管理类")
@Controller
public class SwController {
	@ApiOperation(value = "修改用户密码", notes = "根据用户id修改密码")
	@ApiImplicitParams({
			@ApiImplicitParam(paramType = "query", name = "userId", value = "用户ID", required = true, dataType = "String"),
			@ApiImplicitParam(paramType = "query", name = "password", value = "旧密码", required = true, dataType = "String"),
			@ApiImplicitParam(paramType = "query", name = "newPassword", value = "新密码", required = true, dataType = "String") })
	@PostMapping("/hellosw")
	@ResponseBody
	public String hello(Model model,
			@RequestParam("userId") String userId,
			@RequestParam("password") String password,
			@RequestParam("newPassword") String newPassword) {
		return userId + "-" + password + "-" + newPassword;
	}
}


配置类,用于指定扫描那些接口

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 Swagger2Conf {
	@Bean
	public Docket getUserDocket() {
		ApiInfo apiInfo = new ApiInfoBuilder().title("用户管理")// api标题
				.description("用户管理相关接口描述")// api描述
				.version("1.0.0")// 版本号
				.build();
		return new Docket(DocumentationType.SWAGGER_2)// 文档类型(swagger2)
				.apiInfo(apiInfo)// 设置包含在json ResourceListing响应中的api元信息
				.select()// 启动用于api选择的构建器
				.apis(RequestHandlerSelectors.basePackage("com.example.demo.swagger"))// 扫描接口的包
				.paths(PathSelectors.any())// 路径过滤器(扫描所有路径)
				.build();
	}
}


启动后访问:

http://localhost:8080/swagger-ui.html 


Swagger.jpg

我们甚至可以直接在线就行测试


END 

推荐您阅读更多有关于“ springboot 在线文档 微服务 swagger swagger2 ”的文章

上一篇:SpringBoot整合kaptcha生成登录验证码 下一篇:Mybatis分页插件pageHelper的使用

猜你喜欢

发表评论: