Swagger UI 用于生成交互式 API 文档,让您可以直接在浏览器中尝试 REST 服务调用。

在本指南中,让我们构建一个简单的 Spring Boot REST 服务并将 Swagger UI 集成到该服务中。这让我们可以使用 Spring Boot 集成的 Swagger UI 在浏览器中直接测试我们的 REST 服务。

目录

  1. 创建 spring boot 应用程序(汽车库存服务)
  2. 创建 REST 服务
  3. 启动应用程序
  4. 在浏览器中启动 Swagger UI
  5. 禁用 Swagger 用户界面
  6. Swagger REST API 文档

创建 spring boot 应用程序(汽车库存服务)

使用时构建裸机 Spring Boot 服务很简单Spring InitializrSpring Initializr使用您快速启动所需的内容生成 Spring Boot 项目!让我们从一个开始。

使用 Spring Initializr 创建 Spring Boot 启动项目

让我们利用此处Spring Initializr提供的预配置来创建spring-boot-swagger-integration启动项目。

单击生成项目。这将下载一个包含spring-boot-swagger-integration项目的 zip 文件。将项目导入您的 IDE。

创建 REST 服务

添加 REST 服务方法

使用 2 种方法创建一个 Rest Service 接口 -addCar(car)viewCars().

com.codeaches.carinventoryservice.CarInventoryControllerInterface.java

public interface CarInventoryControllerInterface {public String addCar(@RequestBody(required = true) String car);public Set<String> viewCars();
}

为其余服务接口添加和实现类。

com.codeaches.carinventoryservice.CarInventoryController.java

@RestController
public class CarInventoryController implements CarInventoryControllerInterface {@PostMapping("addCar")public String addCar(@RequestBody String car) {cars.add(car);return car;}@GetMapping("viewCars")public Set<String> viewCars() {return cars;}static Set<String> cars = new HashSet<>();static {cars.add("Toyota");cars.add("Benz");}
}

添加 Swagger 注释和 UI 依赖项

添加下面提到的依赖项,用于添加 Swagger UI 和在我们的 java 代码中使用 Swagger 注释。

pom.xml

<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>

启用 Swagger 用户界面

SwaggerDocumentationConfig.java使用 spring @Bean 注解创建一个新配置并定义一个 Docket 实例。

com.codeaches.carinventoryservice.SwaggerDocumentationConfig.java

@Configuration
@EnableSwagger2
public class SwaggerDocumentationConfig {@Value("${enable.swagger.plugin:true}")private boolean enableSwaggerPlugin;ApiInfo apiInfo() {return new ApiInfoBuilder().title("Swagger Car Inventory Service").description("Car Inventory Service").license("MIT").licenseUrl("https://opensource.org/licenses/MIT").version("1.0.0").contact(new Contact("Codeaches","https://codeaches.com", "pavan@codeaches.com")).build();}@Beanpublic Docket customImplementation() {return new Docket(DocumentationType.SWAGGER_2).useDefaultResponseMessages(false).select().apis(RequestHandlerSelectors.basePackage("com.codeaches.carinventoryservice")).paths(PathSelectors.any()).build().enable(enableSwaggerPlugin).apiInfo(apiInfo());}
}

启动应用程序

启动 Spring Bootspring-boot-swagger-integration应用程序。

应用程序控制台日志

o.apache.catalina.core.StandardService   : Starting service [Tomcat]
org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 866 ms
pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
.SpringBootSwaggerIntegrationApplication : Started SpringBootSwaggerIntegrationApplication in 1.796 seconds (JVM running for 2.483)

Swagger UI 与我们的 rest 服务的基本集成到此结束。

在浏览器中启动 Swagger UI

让我们使用 URL http://localhost:8080/swagger-ui.html在浏览器中启动 Swagger UI

禁用 Swagger 用户界面

enable.swagger.plugin=false您可以通过在application.properties文件中更新来禁用 Swagger UI 。

Swagger REST API 文档

您可以在控制器代码中添加额外的文档,描述其每个操作、参数详细信息、输入和输出变量详细信息等。

所有这些细节都将显示在 Swagger UI 中。

com.codeaches.carinventoryservice.CarInventoryControllerInterface.java

public interface CarInventoryControllerInterface {@ApiOperation(value    = "Add a new car to the inventory", nickname = "addCar", response = String.class, responseContainer = "String")@ApiResponses(value = {@ApiResponse(code = 200, message = "Car Added Successfully", response = String.class, responseContainer = "String"),@ApiResponse(code = 405, message = "Invalid input") })public String addCar(@ApiParam(value = "Car that needs to be added to the inventory", required = true) @RequestBody(required = true) String car);@ApiOperation(value = "View cars in the inventory", nickname = "viewCars", response = Set.class, responseContainer = "Set<String>")@ApiResponses(value = {@ApiResponse(code = 200, message = "List of Cars returned successfully", response = Set.class, responseContainer = "Set<String>") })public Set<String> viewCars();
}

招摇用户界面

http://localhost:8080/swagger-ui.html#/car-inventory-controller/addCar

概括

我们将 Swagger UI 集成到 Spring Boot REST 服务应用程序的指南到此结束。

  • 从 GitHub 下载代码

Swagger UI 与 Spring Boot 的集成相关推荐

  1. 在spring boot中集成Swagger

    Swagger 在spring boot中集成Swagger 新建一个swagger项目 maven依赖 <!-- https://mvnrepository.com/artifact/io.s ...

  2. Spring Boot 工程集成全局唯一ID生成器 Vesta

    2019独角兽企业重金招聘Python工程师标准>>> 本文内容脑图如下: 文章共 760字,阅读大约需要 2分钟 ! 概 述 在前一篇文章 <Spring Boot工程集成全 ...

  3. Spring Boot + Shiro 集成

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot + Shiro 集成 Shiro 是一个流行的 Java 安全框架. 其实 Spring 有一个 Sp ...

  4. Spring Boot 快速集成第三方登录功能

    Spring Boot 快速集成第三方登录功能 前言 此 demo 主要演示 Spring Boot 项目如何使用 史上最全的第三方登录工具 - JustAuth 实现第三方登录,包括 QQ 登录.G ...

  5. Spring/Spring boot正确集成Quartz及解决@Autowired失效问题

    Spring/Spring boot正确集成Quartz及解决@Autowired失效问题 参考文章: (1)Spring/Spring boot正确集成Quartz及解决@Autowired失效问题 ...

  6. 【Spring Boot组件集成实战】集成Kaptcha谷歌验证码

    更多精彩内容,请访问 Spring Boot组件集成实战专栏 ! 推荐项目:一套基于Spring Boot+Layui的内容管理系统/快速开发脚手架(含完整的开发文档.演示网址等) 文章目录 1. 验 ...

  7. SpringBoot2.x系列教程(六十六)Spring Boot快速集成RocketMQ实战教程

    前言 RocketMQ是目前主流的消息中间件之一,并且自身就支持分布式功能.最初由阿里巴巴团队开发,并且经历过双十一等海量消息场景的考验,后捐赠给Apache开源基金会,这也是为什么我们经常听说Roc ...

  8. Spring Boot应用集成Docker并结合Log4j2、Kafka、ELK管理Docker日志

    Preface 原文链接: http://yangbingdong.com/2018/spring-boot-docker-elk/ 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维 ...

  9. spring boot 完整集成jsp。(亲测可用)

    1.idea在工程源文件夹src/main/下创建web资源文件夹,webapp,并设置为资源文件. 2.application.properties文件设置如下   #jsp 支持 spring.m ...

最新文章

  1. 三国时期,假如曹操是一名程序员,历史会发生什么?--文末送书
  2. python批处理修改文件的名字
  3. Deformable ConvNets--Part2: Spatial Transfomer Networks(STN)
  4. Java学习笔记29
  5. cpu高对计算机有什么影响吗,CPU损坏对电脑造成哪些影响
  6. oracle查询排序速度慢,Oracle-请问Oracle SQL排序查询慢如何解决
  7. hadoop--Shuffle机制
  8. 大唐波斯将军 机器人_跑到大唐的萨珊波斯遗民
  9. 海信新机F30S即将发布:搭载紫光展锐虎贲T310处理器
  10. OceanBase之oracle租户的使用体验
  11. WordCount案例实现的11种方法
  12. c++将小数化为二进制_C++中的float内存存储、与十进制的转换
  13. prometheus 发送恢复 值_基于prometheus+grafana+alertmanager监控系统配置钉钉告警
  14. 「知识蒸馏」最新2022研究综述
  15. 大二暑假假期周进度01
  16. K3C使用校园网折腾之路
  17. MQTT测试工具MQTT.FX
  18. 第四方支付平台程序源码_云计费系统源码
  19. WinRAR安装教程
  20. 程序员年薪45万,国企年薪20万,该不该跳槽去国企?

热门文章

  1. 深度学习Deep Learning 资料大全
  2. 怎样实现一个二维码同时支持微信支付和支付宝支付
  3. 有效沟通bic法则_猎头支招:工作中有效沟通的法则
  4. 《程序员》5期全新改版,邀您踏上云计算应用之路!
  5. 安全测试中sql注入测试思路
  6. 浅谈 2017 Google I/O 开发者大会
  7. 关于几个图像质量评价参数的计算总结
  8. android距离感应器控制黑屏,白屏
  9. 从头再来,写好Helloworld
  10. CSS: 潜藏着的BFC