Un cadre ouvert pour assembler les passerelles API Ultra Performance avec Middlewares; Anciennement connu sous le nom de Krakend Framework et le service de base de la Krakend API Gateway.
Les consommateurs de contenu API REST (spécialement en microservices) interrogent souvent des services backend qui n'étaient pas codés pour l'implémentation de l'interface utilisateur. C'est bien sûr une bonne pratique, mais les consommateurs d'interface utilisateur doivent faire des implémentations qui souffrent beaucoup de complexité et de charge avec la taille de leurs réponses microservices.
Lura est un générateur de passerelle API et un générateur de proxy qui se trouve entre le client et tous les serveurs source, ajoutant une nouvelle couche qui supprime toute la complexité aux clients, ne leur fournissant que les informations dont l'interface utilisateur a besoin. Lura agit comme un agrégateur de nombreuses sources en points de terminaison uniques et vous permet de regrouper, envelopper, transformer et rétrécir les réponses. De plus, il prend en charge une myriade de morsures et de plugins qui vous permettent d'étendre les fonctionnalités, telles que l'ajout d'autorisation OAuth ou de couches de sécurité.
Lura prend non seulement le support HTTP (s), mais parce qu'il s'agit d'un ensemble de bibliothèques génériques, vous pouvez créer tous les types de passerelles et de proxys API, y compris par exemple, une passerelle RPC.
Un développeur mobile doit construire une seule première page qui nécessite des données de 4 appels différents à ses services backend, par exemple:
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}
L'écran est très simple, et le client mobile n'a besoin que de récupérer des données à partir de 4 sources différentes, d'attendre l'aller-retour, puis de ne choisir que quelques champs à la main.
Et si le mobile pouvait appeler un seul point de terminaison?
1) lura.server/frontpage/{id_user}
C'est quelque chose que Lura peut faire pour vous. Et c'est à quoi ça ressemblerait:
Lura fusionnerait toutes les données et ne renverrait que les champs dont vous avez besoin (la différence de taille dans le graphique).
Visitez le site Web du projet Lura pour plus d'informations.
Le code source du framework Lura Project. Il est conçu pour fonctionner avec votre propre middleware et étendre les fonctionnalités en utilisant de petits composants indépendants et réutilisables suivant la philosophie UNIX.
Utilisez ce référentiel si vous souhaitez construire à partir de la source de votre passerelle API ou si vous souhaitez réutiliser les composants dans une autre application .
Si vous avez besoin d'une passerelle API entièrement fonctionnelle, vous pouvez télécharger le binaire Krakend pour votre architecture ou le construire vous-même.
Le projet LURA est présenté comme une bibliothèque Go que vous pouvez inclure dans votre propre application Go pour créer une puissante passerelle proxy ou API. Pour un exemple complet, vérifiez le référentiel Krakend CE.
Bien sûr, vous aurez besoin d'être installé dans votre système pour compiler le code.
Un exemple prêt à l'emploi:
package mainImImport ("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, "Port du service") Loglevel: = Flag.String ("L", "ERROR", "Logging Level") Debug: = Flag.bool ("D", false, "Activer le débogage") Configfile: = Flag .String ("C", "/etc/lura/configuration.json", "Chemin vers le nom de fichier de configuration") Flag.Parse () Parser: = config.newparser () ServiceConfig, err: = parser.parse (* configFile) si 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 (Logger) , logger) routerfactory.new (). run (ServiceConfig) }
Visitez l'aperçu du cadre pour plus de détails sur les composants du projet Lura.
Fichier de configuration de Lura
Découvrez les résultats de référence de plusieurs composants Lura
Nous sommes toujours heureux de recevoir des contributions. Si vous avez des questions, des suggestions, des bogues, veuillez ouvrir un problème. Si vous souhaitez soumettre le code, créez le problème et envoyez-nous une demande de révision.
Lire contribution.md pour plus d'informations.
Suivez-nous sur Twitter: @luraproject
Visitez notre canal Slack
Lisez la documentation
Profitez de Lura!