Maison développement back-end Golang Utiliser Kong pour la gestion de la passerelle API dans Beego

Utiliser Kong pour la gestion de la passerelle API dans Beego

Jun 22, 2023 pm 05:13 PM
api网关 beego kong

Avec la popularité de l'architecture des microservices, les passerelles API attirent de plus en plus l'attention. En tant que l'un des composants importants de l'architecture des microservices, la passerelle API est une application responsable de la distribution des requêtes, du routage des requêtes et du filtrage des requêtes. Kong est devenue l'une des passerelles API les plus populaires parmi de nombreuses entreprises en raison de sa flexibilité, de son évolutivité et de sa facilité d'utilisation.

Beego est un framework de développement rapide d'applications Go qui peut prendre en charge le développement d'API RESTful. Dans cet article, nous explorerons comment utiliser Kong pour la gestion des passerelles API dans Beego.

  1. Installer Kong

Tout d'abord, nous devons installer Kong. Kong peut fonctionner sur différentes plates-formes, notamment Windows, Linux, Docker, etc. Ici, nous prenons l'exemple de l'installation de Kong sur Linux.

Utilisez yum pour installer Kong :

$ echo '[bintray--kong-kong-rpm]
name=bintray--kong-kong-rpm
baseurl=https://kong.bintray.com/kong-community-edition-rpm/centos/$releasever/$basearch/
gpgcheck=0
repo_gpgcheck=0
enabled=1' | sudo tee /etc/yum.repos.d/bintray-kong-kong-rpm.repo
$ sudo yum install -y kong
Copier après la connexion

Une fois l'installation terminée, exécutez kong pour démarrer le service Kong.

  1. Créer une API

Implémentez l'API dans Beego et enregistrez-la auprès de Kong pour en faire une API accessible en externe.

La mise en œuvre de l'API dans Beego est relativement simple, je n'entrerai donc pas trop dans les détails ici. Il convient de noter que vous devez utiliser l'API Admin de Kong dans Beego, vous devez donc installer le client Go officiel de Kong : kong-go-sdk.

$ go get github.com/Kong/go-kong/kong
Copier après la connexion

Avant de créer l'API, nous devons disposer d'un objet client de l'API Kong Admin, comme indiqué ci-dessous :

import "github.com/Kong/go-kong/kong"

const KongAdminURL = "http://localhost:8001"

func NewKongClient() (*kong.Client, error) {
    return kong.NewClient(kong.String(KongAdminURL))
}
Copier après la connexion

Ensuite, nous pouvons implémenter l'enregistrement de l'API via le code. Voici un exemple simple :

func RegisterAPI(name, upstreamURL, requestHost, stripPath string) error {
    kongClient, err := NewKongClient()
    if err != nil {
        return fmt.Errorf("create kong client error: %v", err)
    }

    targetURL, err := url.Parse(upstreamURL)
    if err != nil {
        return fmt.Errorf("parse target url error: %v", err)
    }

    api := &kong.API{
        Name:        kong.String(name),
        Uris:        kong.StringSlice("/" + name),
        UpstreamURL: kong.String(targetURL.String()),
        RequestHost: kong.String(requestHost),
        StripUri:    kong.Bool(true),
        StripPath:   kong.Bool(stripPath),
    }

    _, err = kongClient.APIs().Create(kongContext.Background(), api)
    if err != nil {
        return fmt.Errorf("register api to kong error: %v", err)
    }

    return nil
}
Copier après la connexion

Dans le code ci-dessus, nous créons d'abord un objet client de l'API Kong Admin, puis utilisons kong.API pour créer un objet API, tel que le nom de l'API, en amont. URL correspondant à l'API, nom de domaine demandé, s'il faut activer la suppression de l'URI, s'il faut activer la troncature de l'URI et d'autres options. Enfin, nous créons l'API en utilisant le client de l'API Kong Admin. kong.API 创建一个 API 对象,如API名称、API对应的 Upstream URL、请求的域名、是否启用URI去除、是否启用URI截断等选项。最后,我们使用Kong Admin API 的 client 创建API。

接下来,我们需要配置Kong,增加插件和路由来指定请求和响应的处理。

  1. 配置Kong

Kong支持许多插件,使我们可以在请求和响应时进行更高级的处理。常用的插件包括rate-limitingkey-authoauth2等。在这里,我们将使用rate-limiting

Ensuite, nous devons configurer Kong, ajouter des plug-ins et des routes pour spécifier le traitement des requêtes et des réponses.

    Configuration de Kong

    Kong prend en charge de nombreux plugins qui nous permettent d'effectuer un traitement plus avancé sur les requêtes et les réponses. Les plug-ins couramment utilisés incluent rate-limiting, key-auth et oauth2, etc. Ici, nous utiliserons le plugin rate-limiting pour limiter la vitesse d'accès de l'API.

    func AddPlugin(apiName string) error {
        kongClient, err := NewKongClient()
        if err != nil {
            return fmt.Errorf("create kong client error: %v", err)
        }
    
        api, err := kongClient.APIs().Get(kongContext.Background(), &apiName)
        if err != nil {
            return fmt.Errorf("get api error: %v", err)
        }
    
        plugin := &kong.RateLimiting{
            Name:       kong.String("rate-limiting"),
            ConsumerID: nil,
            Limit:      kong.Int(10),
            Policy:     kong.String("local"),
        }
    
        _, err = kongClient.Plugins().Create(kongContext.Background(), &kong.Plugin{
            APIID: api.ID,
            Name:  plugin.Name,
            Config: kong.Configuration{
                kong.String("consumer_id"): plugin.ConsumerID,
                kong.String("limit"):       plugin.Limit,
                kong.String("policy"):      plugin.Policy,
            },
        })
    
        if err != nil {
            return fmt.Errorf("add rate-limiting plugin error: %v", err)
        }
    
        return nil
    }
    
    func AddRoute(apiName string) error {
        kongClient, err := NewKongClient()
        if err != nil {
            return fmt.Errorf("create kong client error: %v", err)
        }
    
        route := &kong.Route{
            Name:   kong.String(apiName),
            Paths:  kong.StringSlice(fmt.Sprintf("/%s", apiName)),
            StripPath: kong.Bool(true),
            PreserveHost: kong.Bool(false),
            RegexPriority: kong.Int(0),
            Service: &kong.Service{
                ID: kong.String(apiName),
            },
        }
    
        _, err = kongClient.Routes().Create(kongContext.Background(), route)
        if err != nil {
            return fmt.Errorf("add route error: %v", err)
        }
    
        return nil
    }
    Copier après la connexion

    Dans le code ci-dessus, nous implémentons les plug-ins et le routage de Kong à l'aide d'appels en chaîne.

    Pour faciliter la démonstration, nous avons uniquement ajouté un plug-in de limitation de courant. En exécutant la fonction CreateRateLimiting, nous allons créer un plug-in nommé « rate-limiting » dans la passerelle Kong et l'appliquer à l'API nommée « api-name ». Dans le code, 10 représente la limite du nombre de requêtes simultanées.

    Vous devez transmettre le nom de l'API lors de l'exécution de la méthode. Nous devons d'abord créer une API dans la passerelle en utilisant le nom de l'API. Appelez la fonction RegisterAPI pour enregistrer l'API que nous avons implémentée dans l'application Beego auprès de la passerelle Kong.

      Après avoir exécuté les fonctions AddPlugin et AddRoute, notre API a été enregistrée dans la passerelle Kong.
    1. Ici, nous utilisons la méthode d'enregistrement direct de l'API auprès de la passerelle API Kong dans l'application Beego. En fait, Kong prend également en charge l'utilisation de fichiers de configuration ou d'autres méthodes pour enregistrer l'API via Kong Manager ou Kong Dashboard. Cependant, ces méthodes nous obligent à opérer manuellement en arrière-plan de la passerelle API Kong, ce qui est fastidieux et prend du temps.

    Enfin, il nous suffit d'accéder à l'API que nous avons implémentée dans Beego via la passerelle API de Kong. Nous pouvons utiliser Postman ou d'autres clients REST pour les tests.

    🎜🎜Résumé : 🎜🎜🎜Dans cet article, nous avons présenté comment utiliser Kong pour la gestion de la passerelle API, y compris l'enregistrement de l'API, l'ajout de plug-ins et la spécification de l'itinéraire. L'utilisation de Kong comme passerelle API peut permettre une gestion et une surveillance des API plus flexibles, efficaces et sécurisées. 🎜

    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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisez Nginx Proxy Manager pour implémenter l'authentification et l'autorisation de la passerelle API Utilisez Nginx Proxy Manager pour implémenter l'authentification et l'autorisation de la passerelle API Sep 27, 2023 pm 08:49 PM

L'utilisation de NginxProxyManager pour implémenter l'authentification et l'autorisation de la passerelle API est une partie importante du développement d'applications Internet modernes. Bien que la passerelle API fournisse des appels d'interface, elle doit également garantir la sécurité de l'interface. Parmi elles, l'authentification et l'autorisation sont des fonctions indispensables de la passerelle API, qui servent à vérifier l'identité du demandeur et à accorder des droits d'accès. Cet article explique comment utiliser NginxProxyManager pour implémenter l'authentification et l'autorisation de la passerelle API, et fournit des exemples de code spécifiques. 1. Qu'est-ce que

Utilisez le framework Gin pour implémenter la passerelle API et les fonctions d'authentification et d'autorisation Utilisez le framework Gin pour implémenter la passerelle API et les fonctions d'authentification et d'autorisation Jun 22, 2023 am 08:57 AM

Dans l'architecture Internet moderne, la passerelle API est devenue un composant important et est largement utilisée dans les scénarios d'entreprise et de cloud computing. La fonction principale de la passerelle API est de gérer et de distribuer uniformément les interfaces API de plusieurs systèmes de microservices, de fournir un contrôle d'accès et une protection de sécurité, et peut également effectuer la gestion, la surveillance et la journalisation des documents API. Afin de mieux garantir la sécurité et l'évolutivité de la passerelle API, certains mécanismes de contrôle d'accès et d'authentification et d'autorisation ont également été ajoutés à la passerelle API. Un tel mécanisme peut garantir que les utilisateurs et les services

Utiliser Prometheus et Grafana pour mettre en œuvre la surveillance et les alarmes dans Beego Utiliser Prometheus et Grafana pour mettre en œuvre la surveillance et les alarmes dans Beego Jun 22, 2023 am 09:06 AM

Avec l’essor du cloud computing et des microservices, la complexité des applications a augmenté. Par conséquent, la surveillance et le diagnostic deviennent l’une des tâches de développement importantes. À cet égard, Prometheus et Grafana sont deux outils open source populaires de surveillance et de visualisation qui peuvent aider les développeurs à mieux surveiller et analyser les applications. Cet article explorera comment utiliser Prometheus et Grafana pour implémenter la surveillance et les alarmes dans le framework Beego. 1. Introduction Beego est une application web open source à développement rapide.

Utilisez Google Analytics pour compter les données du site Web dans Beego Utilisez Google Analytics pour compter les données du site Web dans Beego Jun 22, 2023 am 09:19 AM

Avec le développement rapide d'Internet, l'utilisation d'applications Web devient de plus en plus courante. La manière de surveiller et d'analyser l'utilisation des applications Web est devenue une préoccupation des développeurs et des opérateurs de sites Web. Google Analytics est un puissant outil d'analyse de sites Web qui permet de suivre et d'analyser le comportement des visiteurs d'un site Web. Cet article explique comment utiliser Google Analytics dans Beego pour collecter des données de sites Web. 1. Pour enregistrer un compte Google Analytics, vous devez d'abord

Gestion des erreurs dans Beego - éviter les plantages d'applications Gestion des erreurs dans Beego - éviter les plantages d'applications Jun 22, 2023 am 11:50 AM

Dans le framework Beego, la gestion des erreurs est un élément très important, car si l'application ne dispose pas d'un mécanisme de gestion des erreurs correct et complet, cela peut provoquer un crash ou un mauvais fonctionnement de l'application, ce qui est à la fois un avantage pour nos projets et pour les utilisateurs. problème très grave. Le framework Beego fournit une série de mécanismes pour nous aider à éviter ces problèmes et à rendre notre code plus robuste et maintenable. Dans cet article, nous présenterons les mécanismes de gestion des erreurs dans le framework Beego et discuterons de la manière dont ils peuvent nous aider à éviter

Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Cinq projets open source sélectionnés en langage Go pour vous emmener explorer le monde de la technologie Jan 30, 2024 am 09:08 AM

À l'ère actuelle de développement technologique rapide, les langages de programmation poussent comme des champignons après la pluie. L'un des langages qui a beaucoup retenu l'attention est le langage Go, apprécié par de nombreux développeurs pour sa simplicité, son efficacité, sa sécurité de concurrence et d'autres fonctionnalités. Le langage Go est connu pour son écosystème solide avec de nombreux excellents projets open source. Cet article présentera cinq projets open source sélectionnés en langage Go et amènera les lecteurs à explorer le monde des projets open source en langage Go. KubernetesKubernetes est un moteur d'orchestration de conteneurs open source pour l'automatisation

Utilisation de ZooKeeper et Curator pour la coordination et la gestion distribuées dans Beego Utilisation de ZooKeeper et Curator pour la coordination et la gestion distribuées dans Beego Jun 22, 2023 pm 09:27 PM

Avec le développement rapide d'Internet, les systèmes distribués sont devenus l'une des infrastructures de nombreuses entreprises et organisations. Pour qu’un système distribué fonctionne correctement, il doit être coordonné et géré. À cet égard, ZooKeeper et Curator sont deux outils qui valent la peine d'être utilisés. ZooKeeper est un service de coordination distribué très populaire qui peut nous aider à coordonner l'état et les données entre les nœuds d'un cluster. Curator est une encapsulation de ZooKeeper

Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Déploiement et gestion de production à l'aide de Docker et Kubernetes dans Beego Jun 23, 2023 am 08:58 AM

Avec le développement rapide d’Internet, de plus en plus d’entreprises ont commencé à migrer leurs applications vers des plateformes cloud. Docker et Kubernetes sont devenus deux outils très populaires et puissants pour le déploiement et la gestion d'applications sur les plateformes cloud. Beego est un framework Web développé à l'aide de Golang. Il fournit des fonctions riches telles que le routage HTTP, la superposition MVC, la journalisation, la gestion de la configuration et la gestion des sessions. Dans cet article, nous expliquerons comment utiliser Docker et Kub

See all articles