写点什么

我用 Rocket-API 实现了开放平台

用户头像
棒锤🐮
关注
发布于: 2021 年 04 月 09 日
我用Rocket-API实现了开放平台
  1. 开放平台功能主要包括,鉴权,熔断,限流,缓存,请求改写,返回值改写,网关等功能,相关概要功能图如下:


而这一切都建立在接口管理上,在分布式集群环境中,在不重启服务的情况下如何实现接口的动态管理发布,一直是让人比较头痛的一个问题。


而这个问题,在 Rocket-API 中得到了解决,她能够在线动态的接口管理,而不需要重启服务,通过 Springboot RequestMappingHandlerMapping 来实现。提供的发布功能,能够触发在分布式环境同一项目所有实例的 mapping 的重载,和 SpringBoot 的配置动态刷新 Bus 消息总线逻辑类似,同样不需要重启整个集群


既然接口管理 Rocket-API 帮我搞定了,那我就只需要关注这个接口中的逻辑就可以了,比如上面说到的 『鉴权,限流,熔断,缓存,请求改写,网关』等


在 Rocket-API 中的实现



//鉴权Utils.loadAPI("GET:/cgi-bin/token/validate")
route.init()
.limiter(5,2) //限流,熔断.每5秒中允许请求2次
.cacheTime(10) //接口缓存10秒
.requestHeader({item->["masterId":"111"]}) //请求header重写
.requestBody({item->["hello":"hello"]}) //请求体改写
.requestMethod("POST") //请求方法重写
.to("http://localhost:8080/root-info/list") //请求地址重写
.responseBody({item->item.data.userId="555";return item.data; })//返回实体改写
.responseHeader({item-> //返回header改写 item.masterId = "123"; return item;}).done();
复制代码


直接写简化的代码会比传统的页面配置型的开放平台更灵活


咋一看是否有觉得代理某个接口比较复杂,其实简化后可以这么写,单纯的代理:


route.init().to("http://localhost:8080/root-info/list") //请求地址重写.done();
复制代码


route这个函数是通过 Rocket-API 提供的com.github.alenfive.rocketapi.function.IFunction 来实现的


https://gitee.com/alenfive/rocket-api


发布于: 2021 年 04 月 09 日阅读数: 43
用户头像

棒锤🐮

关注

还未添加个人签名 2019.10.08 加入

还未添加个人简介

评论

发布
暂无评论
我用Rocket-API实现了开放平台