Heim Backend-Entwicklung Golang Verwendung von Kong für die API-Gateway-Verwaltung in Beego

Verwendung von Kong für die API-Gateway-Verwaltung in Beego

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

Mit der Popularität der Microservice-Architektur ziehen API-Gateways immer mehr Aufmerksamkeit auf sich. Als eine der wichtigen Komponenten in der Microservice-Architektur ist das API-Gateway eine Anwendung, die für die Verteilung von Anforderungen, das Weiterleiten von Anforderungen und das Filtern von Anforderungen verantwortlich ist. Aufgrund seiner Flexibilität, Skalierbarkeit und Benutzerfreundlichkeit ist Kong bei vielen Unternehmen zu einem der beliebtesten API-Gateways geworden.

Beego ist ein Framework für die schnelle Entwicklung von Go-Anwendungen, das Unterstützung für die RESTful-API-Entwicklung bieten kann. In diesem Artikel erfahren Sie, wie Sie Kong für die API-Gateway-Verwaltung in Beego verwenden.

  1. Kong installieren

Zuerst müssen wir Kong installieren. Kong kann auf verschiedenen Plattformen ausgeführt werden, darunter Windows, Linux, Docker usw. Hier nehmen wir als Beispiel die Installation von Kong unter Linux.

Verwenden Sie yum, um Kong zu installieren:

$ 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
Nach dem Login kopieren

Nach Abschluss der Installation führen Sie kong aus, um den Kong-Dienst zu starten.

  1. API erstellen

Implementieren Sie die API in Beego und registrieren Sie sie bei Kong, um sie zu einer extern zugänglichen API zu machen.

Die Implementierung der API in Beego ist relativ einfach, daher werde ich hier nicht zu sehr ins Detail gehen. Es ist zu beachten, dass Sie die Admin-API von Kong in Beego verwenden müssen, also müssen Sie den offiziellen Go-Client von Kong installieren: kong-go-sdk.

$ go get github.com/Kong/go-kong/kong
Nach dem Login kopieren

Bevor wir die API erstellen, benötigen wir ein Client-Objekt der Kong Admin API, wie unten gezeigt:

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

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

func NewKongClient() (*kong.Client, error) {
    return kong.NewClient(kong.String(KongAdminURL))
}
Nach dem Login kopieren

Dann können wir die Registrierung der API über Code implementieren. Hier ist ein einfaches Beispiel:

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
}
Nach dem Login kopieren

Im obigen Code erstellen wir zunächst ein Clientobjekt der Kong Admin API und verwenden dann kong.API, um ein API-Objekt zu erstellen, z. B. den API-Namen Upstream URL, die der API entspricht, angeforderter Domänenname, ob die URI-Entfernung aktiviert werden soll, ob die URI-Kürzung aktiviert werden soll und andere Optionen. Schließlich erstellen wir die API mithilfe des Clients der Kong Admin API. kong.API 创建一个 API 对象,如API名称、API对应的 Upstream URL、请求的域名、是否启用URI去除、是否启用URI截断等选项。最后,我们使用Kong Admin API 的 client 创建API。

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

  1. 配置Kong

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

Als nächstes müssen wir Kong konfigurieren, Plug-Ins und Routen hinzufügen, um die Verarbeitung von Anfragen und Antworten festzulegen.

    Konfigurieren von Kong

    Kong unterstützt viele Plugins, die es uns ermöglichen, eine erweiterte Verarbeitung von Anfragen und Antworten durchzuführen. Zu den häufig verwendeten Plug-ins gehören rate-limiting, key-auth und oauth2 usw. Hier verwenden wir das Plugin rate-limiting, um die API-Zugriffsgeschwindigkeit zu begrenzen.

    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
    }
    Nach dem Login kopieren

    Im obigen Code implementieren wir Kongs Plug-Ins und Routing mithilfe von Kettenaufrufen.

    Zur Vereinfachung der Demonstration haben wir nur ein Strombegrenzungs-Plug-in hinzugefügt. Durch Ausführen der CreateRateLimiting-Funktion erstellen wir ein Plug-in mit dem Namen „rate-limiting“ im Kong-Gateway und wenden es auf die API mit dem Namen „api-name“ an. Im Code stellt 10 die Begrenzung der Anzahl gleichzeitiger Anforderungen dar.

    Sie müssen beim Ausführen der Methode den Namen der API übergeben. Wir müssen zunächst eine API im Gateway erstellen, die den API-Namen verwendet. Rufen Sie die RegisterAPI-Funktion auf, um die API, die wir in der Beego-Anwendung implementiert haben, beim Kong-Gateway zu registrieren.

      Nachdem die AddPlugin-Funktion und die AddRoute-Funktion ausgeführt wurden, wurde unsere API im Kong-Gateway registriert.
    1. Hier verwenden wir die Methode der direkten Registrierung der API beim Kong API-Gateway in der Beego-Anwendung. Tatsächlich unterstützt Kong auch die Verwendung von Konfigurationsdateien oder anderen Methoden zur Registrierung der API über Kong Manager oder Kong Dashboard. Bei diesen Methoden müssen wir jedoch manuell im Hintergrund des Kong-API-Gateways arbeiten, was umständlich und zeitaufwändig ist.

    Schließlich müssen wir nur noch über Kongs API-Gateway auf die API zugreifen, die wir in Beego implementiert haben. Zum Testen können wir Postman oder andere REST-Clients verwenden.

    🎜🎜Zusammenfassung: 🎜🎜🎜In diesem Artikel haben wir vorgestellt, wie Sie Kong für die API-Gateway-Verwaltung verwenden, einschließlich API-Registrierung, Plug-in-Hinzufügung und Routenspezifikation. Durch die Verwendung von Kong als API-Gateway kann eine flexiblere, effizientere und sicherere API-Verwaltung und -Überwachung erreicht werden. 🎜

    Das obige ist der detaillierte Inhalt vonVerwendung von Kong für die API-Gateway-Verwaltung in Beego. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwenden Sie Nginx Proxy Manager, um die API-Gateway-Authentifizierung und -Autorisierung zu implementieren Verwenden Sie Nginx Proxy Manager, um die API-Gateway-Authentifizierung und -Autorisierung zu implementieren Sep 27, 2023 pm 08:49 PM

Die Verwendung von NginxProxyManager zur Implementierung der API-Gateway-Authentifizierung und -Autorisierung ist ein wichtiger Bestandteil der modernen Internetanwendungsentwicklung. Während das API-Gateway Schnittstellenaufrufe bereitstellt, muss es auch die Sicherheit der Schnittstelle gewährleisten. Unter diesen sind Authentifizierung und Autorisierung unverzichtbare Funktionen des API-Gateways, mit denen die Identität des Anforderers überprüft und Zugriffsrechte gewährt werden. In diesem Artikel wird erläutert, wie Sie NginxProxyManager zum Implementieren der API-Gateway-Authentifizierung und -Autorisierung verwenden, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist

Verwenden Sie das Gin-Framework, um API-Gateway sowie Authentifizierungs- und Autorisierungsfunktionen zu implementieren Verwenden Sie das Gin-Framework, um API-Gateway sowie Authentifizierungs- und Autorisierungsfunktionen zu implementieren Jun 22, 2023 am 08:57 AM

In der modernen Internetarchitektur ist das API-Gateway zu einer wichtigen Komponente geworden und wird häufig in Unternehmens- und Cloud-Computing-Szenarien eingesetzt. Die Hauptfunktion des API-Gateways besteht darin, die API-Schnittstellen mehrerer Microservice-Systeme einheitlich zu verwalten und zu verteilen, Zugriffskontrolle und Sicherheitsschutz bereitzustellen und auch API-Dokumentenverwaltung, -überwachung und -protokollierung durchzuführen. Um die Sicherheit und Skalierbarkeit des API-Gateways besser zu gewährleisten, wurden dem API-Gateway auch einige Zugriffskontroll- sowie Authentifizierungs- und Autorisierungsmechanismen hinzugefügt. Ein solcher Mechanismus kann sicherstellen, dass Benutzer und Dienste

Verwendung von Prometheus und Grafana zur Implementierung von Überwachung und Alarmierung in Beego Verwendung von Prometheus und Grafana zur Implementierung von Überwachung und Alarmierung in Beego Jun 22, 2023 am 09:06 AM

Mit dem Aufkommen von Cloud Computing und Microservices hat die Anwendungskomplexität zugenommen. Daher werden Überwachung und Diagnose zu einer wichtigen Entwicklungsaufgabe. In dieser Hinsicht sind Prometheus und Grafana zwei beliebte Open-Source-Überwachungs- und Visualisierungstools, die Entwicklern helfen können, Anwendungen besser zu überwachen und zu analysieren. In diesem Artikel wird untersucht, wie Sie Prometheus und Grafana verwenden, um Überwachung und Alarmierung im Beego-Framework zu implementieren. 1. Einführung Beego ist eine Open-Source-Webanwendung für die schnelle Entwicklung.

Verwenden Sie Google Analytics, um Website-Daten in Beego zu zählen Verwenden Sie Google Analytics, um Website-Daten in Beego zu zählen Jun 22, 2023 am 09:19 AM

Mit der rasanten Entwicklung des Internets ist die Nutzung von Webanwendungen immer häufiger geworden. Die Überwachung und Analyse der Nutzung von Webanwendungen ist zu einem Schwerpunkt von Entwicklern und Website-Betreibern geworden. Google Analytics ist ein leistungsstarkes Website-Analysetool, das das Verhalten von Website-Besuchern verfolgen und analysieren kann. In diesem Artikel wird erläutert, wie Sie Google Analytics in Beego zum Sammeln von Website-Daten verwenden. 1. Um ein Google Analytics-Konto zu registrieren, müssen Sie zunächst Folgendes tun

Fünf ausgewählte Open-Source-Projekte in der Go-Sprache, mit denen Sie die Welt der Technologie erkunden können Fünf ausgewählte Open-Source-Projekte in der Go-Sprache, mit denen Sie die Welt der Technologie erkunden können Jan 30, 2024 am 09:08 AM

Im heutigen Zeitalter der rasanten technologischen Entwicklung schießen Programmiersprachen wie Pilze nach einem Regenschauer aus dem Boden. Eine der Sprachen, die viel Aufmerksamkeit erregt hat, ist die Go-Sprache, die von vielen Entwicklern wegen ihrer Einfachheit, Effizienz, Parallelitätssicherheit und anderen Funktionen geliebt wird. Die Go-Sprache ist für ihr starkes Ökosystem mit vielen hervorragenden Open-Source-Projekten bekannt. In diesem Artikel werden fünf ausgewählte Open-Source-Projekte für die Go-Sprache vorgestellt und der Leser soll die Welt der Open-Source-Projekte für die Go-Sprache erkunden. KubernetesKubernetes ist eine Open-Source-Container-Orchestrierungs-Engine für die Automatisierung

Fehlerbehandlung in Beego – Anwendungsabstürze verhindern Fehlerbehandlung in Beego – Anwendungsabstürze verhindern Jun 22, 2023 am 11:50 AM

Im Beego-Framework ist die Fehlerbehandlung ein sehr wichtiger Teil, denn wenn die Anwendung nicht über einen korrekten und vollständigen Fehlerbehandlungsmechanismus verfügt, kann dies dazu führen, dass die Anwendung abstürzt oder nicht ordnungsgemäß ausgeführt wird, was sowohl für unsere Projekte als auch für Benutzer gilt sehr ernstes Problem. Das Beego-Framework bietet eine Reihe von Mechanismen, die uns helfen, diese Probleme zu vermeiden und unseren Code robuster und wartbarer zu machen. In diesem Artikel stellen wir die Fehlerbehandlungsmechanismen im Beego-Framework vor und diskutieren, wie sie uns bei der Vermeidung helfen können

Verwendung von ZooKeeper und Curator für die verteilte Koordination und Verwaltung in Beego Verwendung von ZooKeeper und Curator für die verteilte Koordination und Verwaltung in Beego Jun 22, 2023 pm 09:27 PM

Mit der rasanten Entwicklung des Internets sind verteilte Systeme zu einer der Infrastrukturen in vielen Unternehmen und Organisationen geworden. Damit ein verteiltes System ordnungsgemäß funktioniert, muss es koordiniert und verwaltet werden. In dieser Hinsicht sind ZooKeeper und Curator zwei lohnenswerte Tools. ZooKeeper ist ein sehr beliebter verteilter Koordinationsdienst, der uns dabei helfen kann, den Status und die Daten zwischen Knoten in einem Cluster zu koordinieren. Curator ist eine Kapselung von ZooKeeper

Produktionsbereitstellung und -verwaltung mit Docker und Kubernetes in Beego Produktionsbereitstellung und -verwaltung mit Docker und Kubernetes in Beego Jun 23, 2023 am 08:58 AM

Mit der rasanten Entwicklung des Internets haben immer mehr Unternehmen damit begonnen, ihre Anwendungen auf Cloud-Plattformen zu migrieren. Docker und Kubernetes sind zu zwei sehr beliebten und leistungsstarken Tools für die Anwendungsbereitstellung und -verwaltung auf Cloud-Plattformen geworden. Beego ist ein mit Golang entwickeltes Web-Framework, das umfangreiche Funktionen wie HTTP-Routing, MVC-Layering, Protokollierung, Konfigurationsverwaltung und Sitzungsverwaltung bietet. In diesem Artikel behandeln wir die Verwendung von Docker und Kub

See all articles