一个开放式框架,用中间件组装超级性能API门户;以前称为Krakend Framework ,以及Krakend API Gateway的核心服务。
REST API内容的消费者(特别是微服务)通常会查询未为UI实施编码的后端服务。当然,这是一个很好的做法,但是UI消费者需要进行实施,这些实施与其微服务响应的大小相当复杂和负担。
LURA是位于客户端和所有源服务器之间的API网关构建器和代理生成器,添加了一个新的层,将所有复杂性删除到客户端,仅提供UI所需的信息。卢拉(Lura)充当了单个终点的许多来源的聚合器,并允许您对响应进行分组,包装,转换和收缩响应。此外,它支持了无数的中间件和插件,使您可以扩展功能,例如添加OAuth授权或安全层。
Lura不仅支持HTTP(S),而且由于它是一组通用库,您可以构建所有类型的API网关和代理,包括例如RPC网关。
移动开发人员需要构建一个首页,该首页需要从4个不同调用到其后端服务的数据,例如:
1) api.store.server/products 2) api.store.server/marketing-promos 3) api.users.server/users/{id_user} 4) api.users.server/shopping-cart/{id_user}
屏幕非常简单,移动客户端只需要从4个不同的来源检索数据,等待往返,然后只需从响应中手选择几个字段即可。
如果手机可以调用单个端点怎么办?
1) lura.server/frontpage/{id_user}
那是卢拉可以为您做的事情。这就是外观:
Lura将合并所有数据并仅返回所需的字段(图中的大小差异)。
请访问Lura项目网站以获取更多信息。
LURA项目框架的源代码。它旨在与您自己的中间件合作,并通过使用UNIX哲学的小型,独立的可重复使用的组件来扩展功能。
如果要从源API网关构建,或者想在另一个应用程序中重复使用组件,请使用此存储库。
如果您需要一个功能齐全的API网关,则可以为您的体系结构下载Krakend二进制文件或自己构建。
LURA项目作为GO库表示,您可以在自己的GO应用程序中包含,以构建功能强大的代理或API网关。有关完整的示例,请检查Krakend CE存储库。
当然,您需要在系统中安装来编译代码。
准备使用示例:
软件包mainimport(“ flag”“ log”“ os”“ github.com/luraproject/lura/config”“ github.com/luraproject/lura/lura/logging”“ github.com/luraproject/luraproject/lura/proxy/proxy” github.com/ luraproject/lura/router/gin”)func main(){port:= flag.int(“ p”,0, “服务端口”)loglevel:= flag.string(“ l”,“错误”,“记录级别”)调试:= flag.bool(“ d”,false,“启用debug”)configfile:= flag 。 config.newparser()serviceconfig,err:= parser.parse(*configfile)如果err!= nil {log.fatal(“ error:”,err.error()) } serviceConfig.debug = serviceconfig.debug || *debugif *port!= 0 {serviceConfig.port = *port} logger,_:= logging.newlogger( *loglevel,os.stdout,“ [lura]” routerfactory:= gin.defaultfactory(proxy.defaultfactory.defaultfactory(logger)(logger)(logger) ,logger)routerfactory.new()。run(serviceConfig) }
请访问框架概述以获取有关Lura项目组件的更多详细信息。
lura配置文件
查看几个Lura组件的基准结果
我们总是很乐意收到贡献。如果您有疑问,建议,错误,请打开问题。如果您想提交代码,请创建问题,并向我们发送拉动请求审核。
阅读贡献。md以获取更多信息。
在Twitter上关注我们:@luraproject
访问我们的松弛频道
阅读文档
享受卢拉!