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 接口。并从已下几点来达到提高开发效率与接口质量的目的。

  1. 去掉mvc控制器,将http请求直接无缝接入JAVA服务接口
  2. 统一出入参格式
  3. 统一异常规范
  4. 自动检测服务接口
  5. 负责路由协议的转换

  • 普通的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&params={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

回到顶部