基于SpringCloud的Microservices架构实战案例-在线API管理
simplemall项目前几篇回顾:
源码地址:https://github.com/backkoms/simplemall
前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让你更好的书写API文档的框架。 本实战案例中也引入swagger2作为API管理工具,下面罗列下swagger2+SpringBoot使用步骤。
SpringBoot集成Swagger2
第一步,pom配置
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.6.1</version></dependency><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.6.1</version></dependency>
第二步编写配置管理类Swagger2Config
package com.simplemall.micro.serv.page;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import io.swagger.annotations.ApiOperation;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;/*** swagger2 configuration** @author guooo**/@Configuration//SpringBoot启动时自动装载@EnableSwagger2//打开swagger2功能,缺失的话同样无法打开ui页面publicclassSwagger2Config{@BeanpublicDocket createRestApi(){returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.simplemall.micro.serv.page.api")).apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();}privateApiInfo apiInfo(){returnnewApiInfoBuilder().title("Front app Swagger apis").description("For micro-service 's app to use").version("V1.0").build();}}
经过以上两步简单的配置后,可以直接进行接口代码的编写。
@Api(value ="用户服务", tags ="用户服务接口")@RestController@RefreshScope// 使用该注解的类,会在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。需要重新触发加载动作可以使用POST方式请求/refresh接口,该接口位于spring-boot-starter-actuator依赖,调用前需添加否则404。publicclassAPIAccountController{@ApiOperation(value ="用户登陆")@RequestMapping(value ="acc/login", method ={RequestMethod.POST })publicRestAPIResult<String> login(@ApiParam(value ="手机号")@RequestParam(required =true)String phone,@ApiParam(value ="密码")@RequestParam(required =true)String password,HttpSession session){RestAPIResult<String> restAPIResult =newRestAPIResult<>();Account account = accountFeignClient.login(phone, password);}
使用swagger进行API管理的话,对代码有一定的侵入性,这个需要考虑在内。之前也提到过几种在线API的管理方式,点击链接《介绍几款常用的在线API管理工具》
使用SpringBoot技术,再以maven原始的方式引入swagger使用的话,远不如一个starter来的爽,这里介绍一个swagger-starter,可以更快捷的与spring boot集成使用。
swagger-spring-boot-starter应用
在pom.xml中引入依赖:【当前最新版本 1.7.0.RELEASE】
<dependency><groupId>com.spring4all</groupId><artifactId>swagger-spring-boot-starter</artifactId><version>1.7.0.RELEASE</version></dependency>
注意:从1.6.0开始,我们按Spring Boot官方建议修改了artifactId为swagger-spring-boot-starter,1.6.0之前的版本不做修改,依然为使用spring-boot-starter-swagger !
在应用主类中增加@EnableSwagger2Doc注解
@EnableSwagger2Doc@SpringBootApplicationpublicclassBootstrap{publicstaticvoid main(String[] args){SpringApplication.run(Bootstrap.class, args);}}
默认情况下就能产生所有当前Spring MVC加载的请求映射文档。
参数配置,配置示例
swagger.enabled=trueswagger.title=spring-boot-starter-swaggerswagger.description=Starterfor swagger 2.xswagger.version=1.4.0.RELEASEswagger.license=ApacheLicense,Version2.0swagger.licenseUrl=https://www.apache.org/licenses/LICENSE-2.0.htmlswagger.termsOfServiceUrl=https://github.com/dyc87112/spring-boot-starter-swaggerswagger.contact.name=didiswagger.contact.url=http://blog.didispace.comswagger.contact.email=dyc87112@qq.comswagger.base-package=com.didispaceswagger.base-path=/**swagger.exclude-path=/error, /ops/**swagger.globalOperationParameters[0].name=name oneswagger.globalOperationParameters[0].description=some description oneswagger.globalOperationParameters[0].modelRef=stringswagger.globalOperationParameters[0].parameterType=headerswagger.globalOperationParameters[0].required=trueswagger.globalOperationParameters[1].name=name twoswagger.globalOperationParameters[1].description=some description twoswagger.globalOperationParameters[1].modelRef=stringswagger.globalOperationParameters[1].parameterType=bodyswagger.globalOperationParameters[1].required=false// 取消使用默认预定义的响应消息,并使用自定义响应消息swagger.apply-default-response-messages=falseswagger.global-response-message.get[0].code=401swagger.global-response-message.get[0].message=401getswagger.global-response-message.get[1].code=500swagger.global-response-message.get[1].message=500getswagger.global-response-message.get[1].modelRef=ERRORswagger.global-response-message.post[0].code=500swagger.global-response-message.post[0].message=500postswagger.global-response-message.post[0].modelRef=ERROR
详细介绍可参考源码,地址:https://github.com/SpringForAll/spring-boot-starter-swagger。由于JDK代码编译版本的限制,JDK1.7是不支持的,可使用1.8
扩展阅读:
基于SpringCloud的Microservices架构实战案例-在线API管理的更多相关文章
- 基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...
- 基于SpringCloud的Microservices架构实战案例-架构拆解
自第一篇< 基于SpringCloud的Microservices架构实战案例-序篇>发表出来后,差不多有半年时间了,一直也没有接着拆分完,有如读本书一样,也是需要契机的,还是要把未完成的 ...
- 基于SpringCloud的Microservices架构实战案例
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 基于SpringCloud的微服务架构实战案例项目,以一个简单的购物流程为示例
QuickStart 基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册.登录.商品列表展示.商品详情展示.订单创建.详情查看.订单支付.库存更新等等. 每个业务服务采用独立的M ...
- 基于SpringCloud的微服务架构实战案例项目
QuickStart 基于SpringCloud体系实现,简单购物流程实现,满足基本功能:注册.登录.商品列表展示.商品详情展示.订单创建.详情查看.订单支付.库存更新等等. github源码地址:h ...
- 几款常用的在线API管理工具(是时候抛弃office编写接口文档了)
在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...
- 你不得不知的几款常用的在线API管理工具
在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...
- 介绍几款常用的在线API管理工具
在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...
- 基于springCloud的分布式架构体系
Spring Cloud作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面,之前也写过一些关于Spring Cloud文章,主要偏重各组件的使用,本次分享主要解答这两个问题:Spring Cl ...
随机推荐
- OpenGL红宝书附带源码编译问题集锦
以下所有源码均在win7,VS2008环境下测试.下不再赘述. 1.所有的.c扩展名请改为.cpp扩展名,以避免不可预测的错误. 想知道会出现什么不可预测的错误..请见我上一篇Blog... 2.如果 ...
- 【全面解禁!真正的Expression Blend实战开发技巧】第九章 FluidMoveBehavior完全解析之二平滑运动的滚动条
原文:[全面解禁!真正的Expression Blend实战开发技巧]第九章 FluidMoveBehavior完全解析之二平滑运动的滚动条 这一章讲解FluidMoveBehavior的另一个应用, ...
- python 编码转换 专题
主要介绍了python的编码机制,unicode, utf-8, utf-16, GBK, GB2312,ISO-8859-1 等编码之间的转换. 常见的编码转换分为以下几种情况: 自动识别 字符串编 ...
- Android基础开发入门(一)
前言:我学了一年多的C#(从学编程算起,也没有两年,我现在大二下),中间也一直在学WP开发,虽然技术不咋地,很渣渣,但微软在Build大会上宣布的策略让我觉得有必要学习一下安卓开发了.关于微软的策略, ...
- vs2015未能正确加载“ProviderPackage”包。
原文:vs2015未能正确加载“ProviderPackage”包. 出现以下错误的解决方案 --------------------------- Microsoft Visual Studio - ...
- 关于jquery.fileupload结合PHP上传图片的开发用法流程
这阵子做了一个项目,涉及到了图片上传,以往用的都是uploadify这个插件,感觉它在PC上的使用还是很强大的, 不过最近这个项目涉及到了移动端的上传,其实uploadify也可以,但是他有一个 up ...
- C++中代理类和句柄类
指针是 C 与其他语言区别的重要特征之一,在 C++ 中,指针也被广泛运用,我们通过指针实现多态.然而,众所周知,指针的使用必须小心,否则很容易造成内存泄漏 Memory Leak.当我们有几个指针指 ...
- 开源项目 RethinkDB 关闭,创始人总结失败教训(市场定位错误)
当我们宣布RethinkDB关闭时,我答应写一个调查分析.我花了一些时间来整理所得的教训和经验,现在可以清楚地写出来. 在HN讨论贴中,人们提出了许多关于为什么RethinkDB失败的原因,从莫名的人 ...
- Java Socket基础[备忘]
1.服务端----Server.java import javax.swing.*; import java.io.*; import java.net.*; import java.awt.*; i ...
- Google地图下载工具代码
// // Google Map Tiles Downloader in C# by coolypf // No rights reserved, neither warranty nor guara ...