Qu'est-ce qu'une passerelle de routage? Quelle est la signification de son existence?
Dans les microservices, nous aurons de nombreux microservices, mais il n'y a qu'un seul client. Lorsqu'il appelle notre interface distante, il doit utiliser des adresses différentes, comme les trois microservices suivants (également utilisés dans ce projet) Des trois microservices, voir la fin de l'article pour l'adresse de code)
Nom du service | Nom du projet | Exemple d'adresse d'appel d'interface |
---|---|---|
Module marchandise | passerelle-marchandises-7001 | http://localhost:7001/goods/main |
Module de commande | ordre-passerelle-8001 | http://localhost:8001/order/main |
Module du centre utilisateur | passerelle-utilisateur-9001 | http://localhost:9001/user/main |
De cette façon, lorsque le client appelle, il doit également utiliser une adresse différente (nom d'hôte et port), peut-il être appelé directement à l'aide d'une adresse? C'est similaire au genre de projet que nous avons écrit auparavant. Par exemple:
http://localhost:80/goods/main
Module marchandisehttp://localhost:80/order/main
Module de commandehttp://localhost:80/user/main
Module du centre utilisateur
Démarrage de GateWay
- Introduire le pom.xml dépendant
- Placement application.yml
- Classe de démarrage principale
Eh bien, lancez directement les trois microservices et ce projet, dans le navigateur, vous pouvez directement utiliser http://localhost:80/goods/main
l'adresse pour accéder à chaque service.
Les trois composants de GateWay
Parcours
Cela a été démontré dans l'opération d'introduction ci-dessus et est configuré spring.cloud.gateway.routes
pour effectuer une correspondance de route.
Cependant, l'URI que nous avons configuré ci-dessus est l'adresse réseau (bien sûr, nous pouvons configurer directement notre hôte local à d'autres adresses sur le réseau, telles que baidu.com). Dans les microservices, nous ne devons pas écrire directement morts, et un microservice peut également avoir plusieurs adresses, nous devons donc être configurés comme nom de microservice du registre. Le contenu de la configuration modifiée est le suivant:
- En plus de l'application.yml ci-dessus, il existe une autre façon de configurer le routage (je suppose que vous ne devez pas dire applicin.properties). C'est la façon d'injecter SpringBean, sans parler ici, ceux qui sont intéressés peuvent se rendre sur le site officiel pour y jeter un œil. Mais il est recommandé d'utiliser la configuration du fichier de configuration, car Nacos peut être intégré pour la configuration dynamique, ce qui est plus flexible que d'écrire dans le code
Assertion (prédicats)
Dans le fichier de configuration ci-dessus, les prédicats dans les routes sont une série d'assertions, ce qui signifie que ce qui ne peut être fait que si ces conditions sont remplies. L'attribut Path est utilisé ci-dessus, en plus, il y a
Le chemin est mis en correspondance en fonction du chemin. Les méthodes couramment utilisées sont la méthode (méthode de demande) et l'hôte (adresse demandée). Ces assertions sont des relations "et", c'est-à-dire que si vous configurez plusieurs prédicats, ils doivent être satisfaits en même temps pour acheminer le transfert. Référence détaillée
Filtrer
Il s'agit du filtre utilisé dans les applications Web. Quelle est son utilité? L'utilisation la plus courante est dans les projets de séparation frontaux et principaux.Nous pouvons vérifier l'autorisation des jetons et autres autorisations au niveau de la passerelle (pour vous donner un exemple demain).
Utilisez SpringSecurity et Gateway pour l'authentification réseau et la vérification des autorisations
Adresse de code: Faites attention au compte public WeChat "Xiaoyu et Java", répondez à SpringCloud pour obtenir