


Points de base
- GraphQL Gateway combine les avantages des passerelles API traditionnelles et GraphQL, permettant aux ingénieurs logiciels d'obtenir des données à partir de plusieurs sources de données tout en maintenant l'efficacité frontale.
- Backend, c'est-à-dire, le modèle d'architecture frontal (BFF) réduit le nombre de demandes sur le front-end, simplifiant le processus en permettant une seule demande à la passerelle API, qui récupère ensuite les données de chaque service back-end et le combine.
- GraphQL offre à BFF de nombreux avantages, y compris une acquisition efficace de données, un seul point de terminaison pour toutes les demandes et des requêtes flexibles qui permettent à la frontale de sélectionner uniquement les données requises pour chaque demande.
- Les trois cadres recommandés pour établir des passerelles GraphQL incluent Hasura, STEPZEN et Graphweaver. Ces frameworks fournissent plusieurs capacités telles que les connexions de source de données multiples, le routage, le traitement par lots, la sécurité, le filtrage des sources croisées et l'évolutivité.
Cet article discutera de la façon d'obtenir des données à partir de plusieurs sources de données tout en gardant rapidement le front-end et une solution potentielle: à l'aide de GraphQL Gateway.
En tant qu'ingénieurs logiciels, nous sommes tous confrontés au défi de créer des données de plusieurs systèmes. Même une seule page exige que les données de plusieurs services soient rendues.
Les données sont partout, du CRM aux systèmes financiers, des plates-formes SaaS aux bases de données. Il est inévitable que chaque entreprise achète un grand nombre de plateformes SaaS et espère ensuite avoir une vue commerciale unifiée en plus de chacun d'eux. Nous devons faire face à ce problème et tout rassembler.
GraphQL Gateway combine les avantages des passerelles API traditionnelles et GraphQL.
Nous allons d'abord discuter des avantages des passerelles API, puis voir comment GraphQL s'inscrit. Veuillez continuer à lire cet article, nous couvrirons certains cadres pour construire nos propres passerelles API.
Avantages de la passerelle API
Protéger les API orientées publiques contre les pirates est un travail toutes les temps. Au fil du temps, les organisations ont évolué pour créer de nombreuses API, des architectures axées sur le service aux microservices. Les organisations ont tendance à ajouter une couche de sécurité supplémentaire plutôt que de mettre ces API directement sur Internet, qui est en avance sur toutes ces API et à garantir que l'accès aux données suit toujours les mêmes règles d'authentification.
Ils utilisent une passerelle API pour ce faire.
Des produits tels que Kong ou Apigee exposent des API internes à partir d'un emplacement central. Ils agissent comme un proxy inversé avec des fonctionnalités telles que la gestion des clés de l'API, la limitation des taux et la surveillance.
La passerelle API nous permet de contrôler qui et ce qui peut accéder à chaque service, les connexions de surveillance et l'accès à l'enregistrement.
Récemment, les applications doivent combiner les données des passerelles API et d'autres fournisseurs de SaaS externes. Cela signifie que les anciens outils centralisés (assurez-vous que nos règles sont suivies) sont désormais contournés régulièrement.
Supposons que nous créons une application Web pour l'entreprise. Notre tâche consiste à créer des pages de profil utilisateur. Pendant le processus de connexion, nous devons combiner les données de plusieurs systèmes:
- Salesforce CRM: Enregistrez les données générales des clients, telles que le nom et le nom de famille.
- Ordre: L'unité de commande la plus récente est dans le système de commande au sein de l'organisation.
- Service de notification: les paramètres de notification et les messages récents sont situés dans une base de données spécifique à l'application connectée au service Node.js.
Le client doit émettre trois demandes distinctes pour obtenir les données, comme le montre la figure ci-dessous.
Dans l'image ci-dessus, le client Web envoie trois demandes API distinctes, puis les résultats doivent être combinés dans le code frontal. L'envoi de plusieurs demandes peut affecter les performances de votre application et la combinaison de ces données peut augmenter la complexité de votre code. De plus, s'il existe plusieurs applications, toutes les applications doivent maintenant connaître tous les backends, et un seul changement d'API dans un service peut entraîner des mises à jour pour toutes nos applications.
Nous pouvons faire mieux. Idéalement, nous voulons réduire la demande de trois à un. Nous pouvons créer un nouveau service pour ce faire - un service qui coordonne les demandes de services backend. Cette idée a un nom: Mode BFF.
Le backend, c'est-à-dire le mode d'architecture Frontend (BFF) permet au frontend d'émettre une seule demande.
Mais comment ça marche? Examinons de plus près ce modèle.
Avantages du mode BFF
À l'aide du mode BFF, l'application envoie une seule demande à la passerelle API. Le service BFF demande ensuite les données de chaque service backend et les combine. Enfin, les données sont filtrées et seules les données requises par le frontal sont renvoyées, réduisant ainsi la quantité de données transmises sur le réseau.
Comme indiqué dans l'image ci-dessus, nous introduisons une couche supplémentaire dans la pile pour coordonner les demandes.
Le point de terminaison du profil utilisateur renvoie les données requises par l'application sur la page de profil. La réduction de nos trois demandes à une a résolu nos problèmes de performances précédents.
mais nous n'avons pas encore fini.
L'entreprise décide de publier une application mobile. L'application mobile a également une page de profil, mais cet écran affiche beaucoup moins d'informations de profil.
À ce stade, l'équipe mobile a deux options. L'équipe peut utiliser les points de terminaison de l'équipe Web, ce qui signifie que nous surfacturé des données (obtenez plus de données dont l'application mobile n'a pas besoin). Une autre option consiste à créer vos propres meilleurs amis dans l'équipe mobile.
Selon les attentes, l'équipe mobile a décidé de créer ses propres meilleurs amis car ils voulaient de bonnes performances pour leurs applications.
Comme indiqué dans l'image ci-dessus, les choses commencent à se compliquer, et nous avons maintenant deux nouveaux problèmes:
- Chaque équipe doit créer un nouveau service BFF pour chaque application qu'il crée, ce qui ralentit chaque équipe et rend difficile la normalisation.
- Chaque BFF nécessite des tests de pénétration pour s'assurer qu'il est sûr.
Comment résolvons-nous ces problèmes?
Nous avons besoin d'une solution où chaque application peut choisir les données dont elle a besoin, et il devrait être une seule API utilisée par toutes les applications de l'entreprise.
À mesure que BFF mûrit, de nombreux développeurs ont commencé à essayer d'utiliser GraphQL au lieu de repos.
Voyons comment cette technologie peut aider.
Les avantages de GraphQL sur BFF
GraphQL présente de nombreux avantages qui en font une technologie idéale pour BFF:
- Acquisition efficace de données. GraphQL permet aux clients de demander avec précision les données requises, pas plus ou moins. Cela améliore les performances en réduisant les données transférées de l'API.
- Point de terminaison unique. Au lieu d'exposer de nombreux points de terminaison via la passerelle, GraphQL utilise un seul point de terminaison pour toutes les demandes. Cela simplifie le besoin de maintenance et de contrôle de version.
- Requête flexible. Les clients peuvent créer des requêtes en combinant des champs et des relations en une seule demande. Cela permet aux développeurs frontaux d'optimiser l'acquisition de données, améliorant ainsi les performances. De plus, si les exigences du changement frontal, il peut être mis à jour pour obtenir différentes données sans modifier le back-end.
Le frontal ne peut désormais sélectionner que les données requises pour chaque demande.
Nous pouvons désormais connecter deux de nos applications au même serveur GraphQL, réduisant le besoin d'un deuxième service BFF.
Nous pouvons désormais partager BFF pour toute application dans notre organisation. Nous avons également un seul point final qui doit être testé pour la pénétration.
Mais, nous avons introduit un autre nouveau problème! Nous devons encore gérer deux systèmes - API Gateway et GraphQL BFF.
Et si nous fusions les deux dans une passerelle GraphQL?
Ensuite, voyons comment fonctionne GraphQL Gateway.
Qu'est-ce qu'une passerelle GraphQL?
GraphQL Gateway combine API Gateway avec API GraphQL pour les meilleurs résultats des deux technologies.
passons en revue les avantages:
- Les développeurs ont un seul point de terminaison API pour demander des données. Cela réduit la récupération excessive ou insuffisante, car chaque application sélectionne uniquement les données dont elle a besoin.
- GraphQL Gateway est partagé par de nombreuses applications de votre organisation. Cela signifie que nous avons réduit les risques de sécurité à un seul point de terminaison de l'API.
- Nous n'avons plus qu'un seul service qui doit être géré et déployé car BFF est fusionné avec la passerelle.
L'image suivante montre comment les demandes d'API de profil utilisateur fonctionnent avec GraphQL Gateway.
Dans l'image ci-dessus, le client envoie une seule demande à la passerelle GraphQL, demandant ses données requises. La passerelle émet une seule demande à chaque service et combine les résultats. Nous n'avons maintenant qu'un seul service qui doit être géré et déployé.
J'espère que vous êtes prêt à l'essayer vous-même. Ensuite, voyons comment construire une passerelle GraphQL.
Build GraphQL Gateway
Lors du choix d'un cadre de passerelle, nous devons rechercher certaines fonctionnalités clés:
- Sources de données multiples. La passerelle doit être connectée à de nombreuses sources de données - de la base de données au SaaS - nous devons pouvoir créer notre connexion.
- route. La passerelle doit pouvoir demander des données directement à partir du service sous-jacent.
- Traitement par lots. Plusieurs requêtes envoyées au même service sont envoyées par lots, réduisant le nombre de demandes.
- sûr. L'authentification et l'autorisation doivent contrôler qui peut accéder aux données connectées.
- filtrez entre les sources de données. Des filtres puissants devraient être fournis pour éviter de sur-obtenir les données requises par le client.
- Évolutivité. Les développeurs doivent être en mesure d'étendre le code à l'aide de middleware ou de fonctions pour répondre à leurs besoins.
Il existe de nombreux frameworks à choisir, mais je recommande d'explorer les trois cadres suivants.
Hasura
Hasura est devenu de plus en plus populaire au fil des ans, initialement en tant que serveur GraphQL-Over Over Postgres. Cependant, il augmente la capacité de se connecter à des systèmes externes.
Nous pouvons nous connecter à un "mode distant" qui combine GraphQL à partir d'autres serveurs.
Cette méthode présente quelques inconvénients. Tout d'abord, nous devons créer et gérer notre schéma distant dans un service séparé, et ce service doit être un point de terminaison GraphQL. Cela conduit à un deuxième problème: nous ne pouvons pas nous connecter directement à la source de données.
De plus, Hasura ne nous permet pas de filtrer les données dans une source de données en fonction des valeurs d'une autre source de données. Cela peut sembler académique, mais nous voulons souvent exprimer quelque chose comme «Donnez-moi une commande avec le nom« ABC »».
Cela offre une flexibilité, mais au prix de la gestion de plusieurs services. Jetons un coup d'œil à une option qui peut être connectée directement.
SPEZEN
SPEZEN nous permet de nous connecter directement à la source de données à partir du serveur GraphQL. Cela réduit la nécessité d'exécuter plusieurs services pour créer une passerelle.
Pour connecter le SPEZEN à la source de données, nous créons un fichier de schéma GraphQL comme indiqué ci-dessous:
<code>type Query { anything(message: String): JSON @rest ( endpoint: "https://httpbin.org/anything" method: POST headers: [ {name: "User-Agent", value: "StepZen"} {name: "X-Api-Key", value: "12345"} ] postbody: """ { "user": { "id": "1000", "name": "The User" } } """ ) } </code>
Dans cet exemple, nous utilisons le mode personnalisé pour connecter le serveur à la base de données.
Il existe une autre option que vous préférez, qui est l'approche du code pur. Jetons un œil ensuite.
Graphweaver
Depuis quelques années, j'ai développé un produit open source appelé Graphweaver qui peut être utilisé comme passerelle GraphQL.
Il se connecte directement à notre source de données et crée une API GraphQL instantanée. Cette API contient toutes les opérations CRUD que nous pouvons nous attendre à créer, lire, mettre à jour et supprimer. Il génère automatiquement des filtres, des paramètres de tri et de pagination, ce qui permet d'économiser du temps. Nous pouvons étendre les opérations intégrées avec notre code pour une flexibilité complète.
Graphweaver fournit des connecteurs de données hors de la boîte pour les bases de données telles que Postgres et MySQL, ainsi que les fournisseurs SaaS tels que Xero et Contentful.
apporter des modifications ou la connexion aux sources de données implique d'écrire du code TypeScript, ce qui nous permet de faire une personnalisation complète.
Si vous êtes intéressé à créer votre propre API GraphQL, je vous recommande fortement de consulter le code Graphweaver GitHub.
Conclusion
Dans cet article, nous examinons comment remplacer notre passerelle API actuelle et notre modèle BFF par une seule passerelle GraphQL.
Nous avons examiné les avantages des passerelles API et pourquoi les organisations les utilisent. Le versioning, la limitation des taux et la gestion de l'accès sont des raisons.
Nous avons également examiné le modèle BFF et comment il coordonne les demandes d'API pour les applications frontales.
Enfin, nous avons regardé GraphQL et pourquoi c'est une technique bénéfique pour BFF.
Fin de la journée, cela nous a amenés à créer une passerelle GraphQL, et nous avons examiné trois options pour créer la nôtre: Hasura, STEPZEN et le produit Graphweaver, que j'ai développé.
J'espère que cet article vous convainc d'essayer d'utiliser vous-même GraphQL Gateway, et si vous le pouvez, envisagez d'essayer Graphweaver.
GraphQL Gateway FAQ (FAQ)
Quel est le but principal de GraphQL Gateway?
La passerelle GraphQL agit comme un seul point d'entrée pour toutes les opérations GraphQL. Il est responsable de l'acheminement des demandes vers le service correspondant, d'agrégation des réponses et de les renvoyer au client. Cela vous permet de gérer plusieurs modèles et services GraphQL à partir d'un seul emplacement, ce qui rend vos applications plus évolutives et plus faciles à entretenir.
Quelle est la différence entre GraphQL Gateway et la passerelle API traditionnelle?
La passerelle API traditionnelle est conçue pour gérer les API RESTful, et son mode de fonctionnement est différent de celui de GraphQL. D'un autre côté, les passerelles GraphQL sont spécialement conçues pour gérer les opérations GraphQL. Il fournit des fonctionnalités telles que les coutures de motifs et la fusion qui vous permettent de combiner plusieurs modèles GraphQL en un seul. C'est quelque chose que les passerelles API traditionnelles ne peuvent pas faire.
Qu'est-ce que le motif épissant dans GraphQL Gateway?
Le couture de mode est une fonctionnalité de la passerelle GraphQL qui vous permet de combiner plusieurs modèles GraphQL en un seul. Ceci est particulièrement utile lorsque vous avez plusieurs services et que chacun a son propre schéma et que vous souhaitez les exposer en une seule API. Les coutures de motifs sont responsables de la fusion des modèles et de la résolution de tout conflit, offrant une expérience transparente au client.
Comment GraphQL Gateway améliore-t-il les performances?
Les passerelles GraphQL peuvent améliorer considérablement les performances en réduisant le nombre d'aller-retour entre les clients et les serveurs. Au lieu de faire plusieurs demandes à différents services, le client fait simplement une seule demande à la passerelle GraphQL, qui achemine ensuite les demandes du service correspondant, agrége les réponses et les renvoie au client. Cela réduit la latence du réseau et améliore les performances globales.
Puis-je utiliser GraphQL Gateway dans mon microservice?
Oui, les passerelles GraphQL conviennent particulièrement aux architectures de microservice. Chaque microservice peut avoir son propre motif GraphQL, que la passerelle peut épisser ensemble pour fournir une API unifiée. Cela vous permet de gérer et d'échapper indépendamment les microservices tout en fournissant une interface cohérente à vos clients.
La passerelle GraphQL est-elle compatible avec tous les langages de programmation?
La passerelle GraphQL est sans langue, ce qui signifie qu'elle peut être utilisée avec n'importe quel langage de programmation qui prend en charge GraphQL. Cela comprend des langues populaires telles que Javascript, Python, Ruby et Java.
Comment GraphQL Gateway gère-t-il les erreurs?
GraphQL Gateway offre de puissantes capacités de gestion des erreurs. Si une erreur se produit dans l'un des services, la passerelle renvoie un message d'erreur détaillé au client, y compris des informations sur le service a provoqué l'erreur et quelle erreur s'est produite. Cela facilite le diagnostic et la résolution des problèmes.
Puis-je utiliser GraphQL Gateway dans une architecture sans serveur?
Oui, GraphQL Gateway est compatible avec l'architecture sans serveur. Vous pouvez déployer votre passerelle en tant que fonction sans serveur, qui vous permet de profiter de l'évolutivité et de la rentabilité de l'informatique sans serveur.
Comment GraphQL Gateway gère-t-il la sécurité?
GraphQL Gateway fournit une variété de fonctionnalités de sécurité, notamment l'authentification et l'autorisation, la limitation des taux et la vérification de la demande. Ces fonctionnalités aident à protéger vos services contre l'accès et les abus non autorisés.
Puis-je utiliser GraphQL Gateway avec une API RESTful existante?
Oui, vous pouvez utiliser GraphQL Gateway avec votre API RESTful existante. Les passerelles peuvent envelopper votre API RESTful dans le modèle GraphQL, vous permettant de profiter de GraphQL tout en utilisant des API existantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

La puissance du cadre JavaScript réside dans la simplification du développement, l'amélioration de l'expérience utilisateur et les performances des applications. Lorsque vous choisissez un cadre, considérez: 1. Taille et complexité du projet, 2. Expérience d'équipe, 3. Écosystème et soutien communautaire.

INTRODUCTION Je sais que vous pouvez le trouver étrange, que doit faire exactement JavaScript, C et Browser? Ils semblent sans rapport, mais en fait, ils jouent un rôle très important dans le développement Web moderne. Aujourd'hui, nous discuterons du lien étroit entre ces trois. Grâce à cet article, vous apprendrez comment JavaScript fonctionne dans le navigateur, le rôle de C dans le moteur du navigateur et comment ils fonctionnent ensemble pour stimuler le rendu et l'interaction des pages Web. Nous connaissons tous la relation entre JavaScript et Browser. JavaScript est la langue principale du développement frontal. Il fonctionne directement dans le navigateur, rendant les pages Web vives et intéressantes. Vous êtes-vous déjà demandé pourquoi javascr

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel
