一个开放的框架,用于通过中间件组装超高性能的 API 网关;前身为 KrakenD 框架,是 KrakenD API 网关 的核心服务。
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 项目网站 获取更多信息。
Lura 项目 框架的源代码。它旨在与您自己的中间件配合使用,并通过使用小型、独立、可重用的组件来扩展功能,遵循 Unix 哲学。
如果您想 从源代码构建您的 API 网关,或者想 在另一个应用程序中重用组件,请使用此仓库。
如果您需要一个功能完整的 API 网关,您可以下载适合您架构的 KrakenD 二进制文件 或 自己构建。
Lura 项目作为一个 Go 库 呈现,您可以在自己的 Go 应用程序中包含它来构 建强大的代理或 API 网关。有关完整示例,请查看 KrakenD CE 仓库。
当然,您需要在系统中 安装 Go 来编译代码。
一个现成的示例:
package main import ( "flag" "log" "os" "github.com/luraproject/lura/config" "github.com/luraproject/lura/logging" "github.com/luraproject/lura/proxy" "github.com/luraproject/lura/router/gin" ) func main() { port := flag.Int("p", 0, "服务端口") logLevel := flag.String("l", "ERROR", "日志级别") debug := flag.Bool("d", false, "启用调试") configFile := flag.String("c", "/etc/lura/configuration.json", "配置文件路径") flag.Parse() parser := config.NewParser() serviceConfig, err := parser.Parse(*configFile) if err != nil { log.Fatal("错误:", err.Error()) } serviceConfig.Debug = serviceConfig.Debug || *debug if *port != 0 { serviceConfig.Port = *port } logger, _ := logging.NewLogger(*logLevel, os.Stdout, "[LURA]") routerFactory := gin.DefaultFactory(proxy.DefaultFactory(logger), logger) routerFactory.New().Run(serviceConfig) }
访问 框架概述 了解有关 Lura 项目组件的更多详细信息。
查看几个 Lura 组件的 基准测试结果
我们总是很高兴收到贡献。如果您有问题、建议、错误,请开启一个 issue。 如果您想提交代码,请创建 issue 并向我们发送 pull request 以供审核。
阅读 CONTRIBUTING.md 获取更多信息。
享受 Lura!
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
AI办公助手,复杂任务高效处理
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。