Un marco abierto para ensamblar las puertas de enlace de la API Ultra Performance con Middlewares; Anteriormente conocido como Krakend Framework , y el servicio central de Krakend API Gateway.
Los consumidores de contenido de API REST (especialmente en microservicios) a menudo consultan servicios de backend que no estaban codificados para la implementación de la UI. Esta es, por supuesto, una buena práctica, pero los consumidores de la UI deben hacer implementaciones que sufran mucha complejidad y carga con los tamaños de sus respuestas de microservicios.
Lura es un generador API Gateway Builder y proxy que se encuentra entre el cliente y todos los servidores de origen, agregando una nueva capa que elimina toda la complejidad a los clientes, proporcionándoles solo la información que la interfaz de usuario necesita. Lura actúa como un agregador de muchas fuentes en puntos finales únicos y le permite agrupar, envolver, transformar y reducir las respuestas. Además, admite una miríada de artículos intermedios y complementos que le permiten extender la funcionalidad, como agregar autorización o capas de seguridad.
Lura no solo admite HTTP (s), sino que es un conjunto de bibliotecas genéricas, puede construir todo tipo de puertas de enlace y proxies de API, incluso, por ejemplo, una puerta de enlace RPC.
Un desarrollador móvil necesita construir una página principal que requiera datos de 4 llamadas diferentes a sus servicios de backend, por ejemplo:
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}
La pantalla es muy simple, y el cliente móvil solo necesita recuperar datos de 4 fuentes diferentes, esperar el viaje de ida y luego elegir a mano solo unos pocos campos de la respuesta.
¿Qué pasa si el móvil podría llamar a un solo punto final?
1) lura.server/frontpage/{id_user}
Eso es algo que Lura puede hacer por ti. Y así es como se vería:
Lura fusionaría todos los datos y devolvería solo los campos que necesita (la diferencia de tamaño en el gráfico).
Visite el sitio web del Proyecto Lura para obtener más información.
El código fuente para el marco del proyecto Lura. Está diseñado para trabajar con su propio middleware y extender la funcionalidad mediante el uso de componentes pequeños, independientes y reutilizables siguiendo la filosofía Unix.
Use este repositorio si desea construir desde la puerta de enlace de su API o si desea reutilizar los componentes en otra aplicación .
Si necesita una puerta de enlace API completamente funcional, puede descargar el Krakend Binary para su arquitectura o construirla usted mismo.
El proyecto Lura se presenta como una biblioteca GO que puede incluir en su propia aplicación GO para construir una poderosa puerta de enlace proxy o API. Para obtener un ejemplo completo, consulte el repositorio de Krakend CE.
Por supuesto, necesitará Instalar en su sistema para compilar el código.
Un ejemplo listo para usar:
Paquete MainImport ("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," puerto del servicio ") logLevel: = flag.string (" l "," error "," nivel de registro ") debug: = flag.Bool (" d ", falso," habilitar la depuración ") configfile: = flag.string (" c "," /etc/lura/configuration.json "," ruta al nombre de archivo de configuración ") flag.parse () parser: = config.newparser () ServiceConfig, err: = parser.parse (*configFile) if 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.defaulty (logger) , logger) RouterFactory.new (). Run (ServiceConfig) }
Visite la descripción general del marco para obtener más detalles sobre los componentes del proyecto Lura.
Archivo de configuración de lura
Consulte los resultados de referencia de varios componentes de Lura
Siempre estamos felices de recibir contribuciones. Si tiene preguntas, sugerencias, errores, abra un problema. Si desea enviar el código, cree el problema y envíenos una solicitud de extracción de revisión.
Leer contribuyente.md para más información.
Síganos en Twitter: @LuraProject
Visite nuestro canal Slack
Leer la documentación
¡Disfruta de Lura!