SpringBoot+Swagger整合API
SpringBoot+Swagger整合API
Swagger:整合规范的api,有界面的操作,测试
1.在pom.xml加入swagger依赖
- <!--整合Swagger2配置类-->
- <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>
2.在application.yml开启swagger
- #引入swagger
- swagger:
- enable: true
3.配置SwaggerConfiguration.java
注意:@Value("${swagger2.basePackage:com.spingcloud.serviceconsumer.controller}") 添加扫描的api入口
- @Configuration
- @EnableSwagger2
- public class SwaggerConfiguration {
- @Value("${swagger2.basePackage:com.spingcloud.serviceconsumer.controller}")
- private String swagger2BasePackage;
- @Value("${swagger2.title:系统API文档}")
- private String swagger2Title;
- @Value("${swagger2.api.version:2.0}")
- private String apiVersion;
- @Bean
- public Docket createRestApi() {
- //添加query参数start
- ParameterBuilder tokenPar = new ParameterBuilder();
- List<Parameter> pars = new ArrayList<Parameter>();
- // tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("query").required(true).build();
- pars.add(tokenPar.build());
- //添加query参数end
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select().apis(RequestHandlerSelectors.basePackage(swagger2BasePackage))
- .paths(PathSelectors.any())
- .build()
- // .globalOperationParameters(pars)
- //添加验证
- // .securitySchemes(securitySchemes())
- // .securityContexts(securityContexts())
- //添加验证
- ;
- }
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title(swagger2Title)
- .version(apiVersion)
- .build();
- }
- private List<ApiKey> securitySchemes() {
- List<ApiKey> apiKeyList= new ArrayList();
- apiKeyList.add(new ApiKey("token", "令牌", "header"));
- return apiKeyList;
- }
- private List<SecurityContext> securityContexts() {
- List<SecurityContext> securityContexts=new ArrayList<>();
- securityContexts.add(
- SecurityContext.builder()
- .securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex("^(?!auth).*$"))
- .build());
- return securityContexts;
- }
- List<SecurityReference> defaultAuth() {
- AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
- AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
- authorizationScopes[0] = authorizationScope;
- List<SecurityReference> securityReferences=new ArrayList<>();
- securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
- return securityReferences;
- }
- }
4.在Controller类上添加:
- @RestController
- //@RequestMapping("/api/v1/order")
- @RequestMapping(value = "api")
- @Api("OrderFeginController相关的api")
- public class OrderFeginController {
- @Autowired
- private ProductOrderFeginService productOrderFeginService;
- //限流:对外提供一个服务接口,允许最大并发数为10
- // private final Semaphore permit = new Semaphore(4, true);
- //当调用微服务出现异常会降级到saveOrderFail方法中
- @HystrixCommand(fallbackMethod = "saveOrderFail")
- @RequestMapping(value = "/saveorder",method = RequestMethod.GET)
- @ApiOperation(value = "根据id查询商品信息", notes = "查询数据库中某个的商品信息")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "user_id",paramType = "query", value = "用户ID", required = true),
- @ApiImplicitParam(name = "product_id",value = "商品ID",required = true,paramType = "query",dataType = "string")
- })
- public Object saveorder(@RequestParam("user_id")int userId, @RequestParam("product_id") int productId) throws InterruptedException {
- return productOrderFeginService.saveorder(userId, productId);
- }
- //注意,方法签名一定要要和api方法一致
- private Object saveOrderFail(int userId, int productId){
- System.out.println("controller中的降级方法");
- Map<String, Object> msg = new HashMap<>();
- msg.put("code", -1);
- msg.put("msg", "抢购人数太多,您被挤出来了,稍等重试");
- return msg;
- }
- }
SpringBoot+Swagger整合API的更多相关文章
- SpringBoot+Swagger整合
0.引言及注意事项 Swagger是一个接口文档工具,依照Swagger可以0配置开发接口.不过要注意,Swagger是基于SpringBoot1.47版本开发的,而SpringBoot现在基本都是是 ...
- springboot swagger 整合
Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. 文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步. 作用: 1. ...
- SpringBoot+Swagger2 整合
SpringBoot+Swagger2四步整合 第一步:添加相关依赖 <parent> <groupId>org.springframework.boot</groupI ...
- SpringBoot整合Swagger测试api构建
@Author:SimpleWu 什么是Swagger? Swagger是什么:THE WORLD'S MOST POPULAR API TOOLING 根据官网的介绍: Swagger Inspec ...
- springboot+mybatis-puls利用swagger构建api文档
项目开发常采用前后端分离的方式.前后端通过API进行交互,在Swagger UI中,前后端人员能够直观预览并且测试API,方便前后端人员同步开发. 在SpringBoot中集成swagger,步骤如下 ...
- springboot+jpa+mysql+swagger整合
Springboot+jpa+MySQL+swagger整合 创建一个springboot web项目 <dependencies> <dependency> < ...
- SpringBoot与Swagger整合
1 SpringBoot与Swagger整合https://blog.csdn.net/jamieblue1/article/details/99847744 2 Swagger详解(SpringBo ...
- springboot利用swagger构建api文档
前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ...
- Docker镜像仓库Harbor之Swagger REST API整合配置
转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...
随机推荐
- Centos7+LVS-DR+keepalived实验(包含sorry-server、日志、及HTTP-GET的健康检测)
目录检索 一.简介 1.lvs-dr原理请参考原理篇 2.keepalived原理请参考原理篇 3.基于lvs-dr+keepalived故障切换架构图如下: 二.部署 1.环境 2.准备RS的web ...
- 高可用实现KeepAlived原理简介
一.简介 目前主流实现web网站及数据库服务高可用软件包括:keepalived.heartbeat.corosync,cman;高可用简称HA: 官方站点:https://www.keepalive ...
- .Net Core 实践 - 如何在控制台应用(.Net Core)使用appsettings.json配置
新建控制台应用(.Net Core)程序 添加json文件,命名为appsettings.json,设置文件属性 如果较新则复制.添加内容如下 { "MyWords" : &quo ...
- qutebrowser 只用键盘操作的浏览器
一个 Qt 库制作的最简化浏览器,内核是 Chromium.最大特点就是它自带命令行,可以完全用键盘操作. 下载地址: 链接:https://share.weiyun.com/5Y2Ajvn 密码:m ...
- 并发concurrent---1
背景:并发知识是一个程序员段位升级的体现,同样也是进入BAT的必经之路,有必要把并发知识重新梳理一遍. 并发concurrent: 说到并发concurrent,肯定首先想到了线程,创建线程有两种方法 ...
- 解决IE6-IE7下li上下间距变大问题
在IE6/7下li会向下产生大约2px的外边距 解决方法:li{vertical-align:top;}或者 li{vertical-align:bottom;} 解决问题!
- phpstorm 代码注释后,撤销某段代码的注释的,快捷键是什么?
phpstorm 的代码注释有两种风格,一种是双斜杠,另一种是 /* ... */风格,两者的快捷键都是开关式(即按第一次为注释,再按一次为撤销注释),快捷键如下: 1.双斜杠注释 Ctrl + ...
- CSS3文字与字体 text-overflow 与 word-wrap
text-overflow 对象内的文本溢出部分采用省略“...”标记 或者 剪切: text-overflow:elip(超出容器边界的内容剪切掉) | ellipsis(超出容器边界内容省略标示 ...
- python在sqlite动态创建表源码
代码之余,将开发过程中经常用的代码片段备份一下,如下的代码是关于python在sqlite动态创建表的代码,应该能对各位有所用. import sqlite3 as db conn = db.conn ...
- JS 字符串对象 数组对象 函数对象 函数作用域
一.内置对象 object对象:ECMAScript 中的所有对象都由这个对象继承而来:Object 对象中的所有属性和方法都会出现在其他对象中 ToString() : 返回对象的原始字符串表示.V ...