lambkit微服务架构企业级APIRoute设计与实现
lambkit为了方便业务实现,方便vue和移动端的前后端分离,设计了API路由功能,跳过controller,直接发布service接口。
-------------------------------------------------------------------------------
设计思路来自曾广祎(鲁班)的视频,https://www.bilibili.com/video/av58758140/
另外,这里为了方便讲解,引用了作者:IT人故事会 的文章 『互联网架构』软件架构-API接口安全网关《service变controller》(16)这篇文章的内容。
-------------------------------------------------------------------------------
移动互联时代,都在追寻一个万能的解,其实这个解可能不存在。其实后端开发的挑战越来越多。里面很多个controller,如果系统越来越庞大,导致的结果维护困难。
(1)什么是API路由
API路由是一个轻量的java http 接口组件,可无缝将普通的 Serive 方法转换成 http 接口。并从已下几点来达到提高开发效率与接口质量的目的。
- 去掉mvc控制器,将http请求直接无缝接入JAVA服务接口
- 统一出入参格式
- 统一异常规范
- 自动检测服务接口
- 负责路由协议的转换
- 普通的http接口
- API网关接口的实现
(2)使用方法
1)定义Dao:
public class Goods { private String goodsName;
private String goodsId;
public Goods() {
}
public Goods(String goodsName, String goodsId) {
this.goodsName = goodsName;
this.goodsId = goodsId;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public String getGoodsId() {
return goodsId;
}
public void setGoodsId(String goodsId) {
this.goodsId = goodsId;
}
}
2)定义Service接口和实现类:
public interface GoodsService { @ApiMapping("lambkit.api.goods.get")
public Goods getGodds(Integer id);
}
public class GoodsServiceImpl implements GoodsService {
public Goods getGodds(Integer id) {
if(id==0) {
return null;
} else {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new Goods("vvv", id.toString());
}
}
}
3)系统配置config:
@Override public void configHandler(Handlers handlers) {
handlers.add(ApiRoute.me().getHandler("/api"));
}
4)前端请求:
https://*******************/api?method=lambkit.api.goods.get¶ms={id:1}
method
method就是service接口定义中的注解@ApiMapping("lambkit.api.goods.get")名称。
params
params就是service接口的参数,采用json格式。
API路由会校验json的有效性。
API路由会将json转换成该接口的参数传入接口获取结果返回。
API路由会统一返回结果的格式。
5)返回:
{ "code":200,
"message":"success",
"error":null,
"data":
{
"goodsName":"vvv",
"goodsId":"1"
}
}
以上是 lambkit微服务架构企业级APIRoute设计与实现 的全部内容, 来源链接: utcz.com/z/515893.html