一個開放式框架,用中間件組裝超級性能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”, “ error”,“ error”,“”記錄級別”)調試:= flag.bool(“ d”,false,“啟用debug”)configfile:= flag.string(“ c”,“ /etc/lura/configuration .json”,“通往配置的路徑”文件名”)flag.parse()parser:= config.newparser()serviceConfig,err:= parser.parse(*configfile)如果err!= nil {log.fatal( “ error:”,“ 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
訪問我們的鬆弛頻道
閱讀文檔
享受盧拉!