版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012442381/article/details/89047954
Spring Boot与swagger 集成
swagger 简单描述
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
环境
IntelliJ IDEA
Maven
集成步骤
步骤1: 修改pom.xml,添加maven依赖
<!-- Swagger -->
<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>
步骤2: 创建swagger配置文件类
实现
package com.nb.spr.spr;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/*
* SwaggerConfig 配置
* */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("apiInfo")
.pathMapping("/")// base,最终调用接口后会和paths拼接在一起
.apiInfo(apiInfo())
.select()
//为当前包路径
.apis(RequestHandlerSelectors.basePackage("com.nb.spr.spr.controller"))
//PathSelectors.any() 任意接口, 可以自定义如: .paths(or(regex("/api/.*")))
.paths(PathSelectors.any())
.build();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("Spring Boot 测试使用 Swagger2 构建RESTful API")
//创建人
.contact(new Contact("NGGLOG","https://blog.csdn.net","xxx"))
//版本号
.version("1.0")
//描述
.description("API 描述")
.build();
}
}
步骤3: 实现restFul接口
package com.nb.spr.spr.controller;
import com.nb.spr.spr.service.IUserService;
import com.nb.spr.spr.vo.UserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* spring boot restful API
* 用户服务接口
*/
@RestController
@RequestMapping("api/user")
@Api
public class UserController {
@Autowired
private IUserService iUserService;
private static final Logger logger= LoggerFactory.getLogger(UserController.class);
/**
* 参数:@PathVariable
* @param userId
* @return
*/
@ResponseBody
@ApiOperation(value = "根据id查询用户信息", notes = "查询数据库中某个的用户信息")
@ApiImplicitParam(name = "userId", value = "用户ID", paramType = "path", required = true, dataType = "Long")
@RequestMapping(value = "/getUserInfo/{userId}", method = RequestMethod.GET)
public UserVO getUserInfo(@PathVariable Long userId) {
logger.info("开始查询某个用户信息");
return iUserService.getUserInfoById(userId);
}
/**
* 参数 :@RequestBody
* @param vo
* @return
*/
@ResponseBody
@ApiOperation(value = "根据id查询用户信息", notes = "查询数据库中某个的用户信息")
@RequestMapping(value = "/getUserBody", method = RequestMethod.POST)
public UserVO getUserBody(@RequestBody UserVO vo) {
logger.info("开始查询某个用户信息");
return iUserService.getUserInfoById(vo.getUserId());
}
}
步骤4: 测试
测试项目:http://localhost:8081/sprdemo/swagger-ui.html