Uma estrutura aberta para montar os gateways da API de desempenho ultra; Anteriormente conhecido como estrutura de Krakend e serviço central do Gateway da API de Krakend.
Os consumidores de conteúdo da API REST (especialmente em microsserviços) geralmente consultam serviços de back -end que não eram codificados para a implementação da interface do usuário. É claro que isso é uma boa prática, mas os consumidores da interface do usuário precisam fazer implementações que sofrem muita complexidade e carga com os tamanhos de suas respostas de microsserviços.
O LURA é um construtor de gateway de API e gerador de proxy que fica entre o cliente e todos os servidores de origem, adicionando uma nova camada que remove toda a complexidade aos clientes, fornecendo apenas as informações de que a interface do usuário precisa. Lura atua como agregador de muitas fontes em pontos de extremidade única e permite agrupar, envolver, transformar e encolher respostas. Além disso, ele suporta uma infinidade de middlewares e plugins que permitem estender a funcionalidade, como adicionar camadas de autorização ou segurança do OAuth.
O LURA não apenas suporta HTTP (s), mas porque é um conjunto de bibliotecas genéricas, você pode criar todo tipo de gateways e proxies da API, incluindo, por exemplo, um gateway RPC.
Um desenvolvedor móvel precisa construir uma única página inicial que requer dados de 4 chamadas diferentes para seus serviços de back -end, por exemplo:
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}
A tela é muito simples e o cliente móvel precisa apenas recuperar dados de 4 fontes diferentes, aguarde a viagem de ida e volta e, em seguida, escolha apenas alguns campos da resposta.
E se o celular pudesse chamar um único terminal?
1) lura.server/frontpage/{id_user}
Isso é algo que Lura pode fazer por você. E é assim que seria:
Lura mesclaria todos os dados e retornaria apenas os campos necessários (a diferença de tamanho no gráfico).
Visite o site do Lura Project para obter mais informações.
O código -fonte da estrutura do projeto LURA. Ele foi projetado para trabalhar com seu próprio middleware e estender a funcionalidade usando componentes pequenos, independentes e reutilizáveis após a filosofia do UNIX.
Use este repositório se você deseja construir a partir da fonte do seu gateway da API ou se deseja reutilizar os componentes em outro aplicativo .
Se você precisar de um gateway de API totalmente funcional, poderá fazer o download do binário de Krakend para sua arquitetura ou construí -lo sozinho.
O projeto LURA é apresentado como uma biblioteca GO que você pode incluir em seu próprio aplicativo GO para criar um poderoso gateway proxy ou API. Para um exemplo completo, verifique o repositório CE Krakend.
Obviamente, você precisará ser instalado em seu sistema para compilar o código.
Um exemplo pronto para uso:
Pacote MainImport ("Flag" "Log" "OS" "github.com/luraproject/lura/config" "github.com/luraproject/lura/logging" "github.com/luraproject/lura/proxy" "github.com/ luraproject/lura/roteador/gin ") func main () {porta: = flag.int (" p ", 0, "Porta do Serviço") Loglevel: = Flag.string ("L", "Erro", "Nível de Loging") Debug: = Flag.Bool ("D", False, "Enable the Debug") ConfigFile: = Flag. .String ("c", "/etc/lura/configuration.json", "caminho para o nome do arquivo de configuração") flag.parse () analiser: = config.NewParser () serviceConfig, err: = parser.parse (*configfile) se err! = nil {log.fatal ("erro:", err.error ()) } serviceConfig.debug = serviceConfig.debug || *debugif *porta! = 0 {serviceConfig.port = *porta} logger, _: = logging.newLogger ( *loglevel, os.stdout, "[lura]") roteterFactory: = gin.defaultFactory (proxy.defaultFactory (logger) , Logger) RouterFactory.New (). Run (ServiceConfig) }
Visite a visão geral da estrutura para obter mais detalhes sobre os componentes do projeto LURA.
Arquivo de configuração do LURA
Confira os resultados de referência de vários componentes da LURA
Estamos sempre felizes em receber contribuições. Se você tiver dúvidas, sugestões, bugs, abra um problema. Se você deseja enviar o código, crie o problema e envie -nos uma solicitação de revisão.
Leia contribuindo.md Para obter mais informações.
Siga -nos no Twitter: @luraproject
Visite nosso canal de folga
Leia a documentação
Desfrute de Lura!