Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen Sie ein API-Gateway mit der Go-Sprache

Erstellen Sie ein API-Gateway mit der Go-Sprache

PHPz
PHPzOriginal
2023-06-18 09:07:431309Durchsuche

Mit der Popularität der Microservice-Architektur wird das API-Gateway als unverzichtbarer Bestandteil der Microservice-Architektur von Unternehmen zunehmend geschätzt. Das API-Gateway fungiert hauptsächlich als externe Fassade, bietet einen Einstiegspunkt und ist für eine Reihe von Funktionen wie Protokollkonvertierung, verteilten Lastausgleich, Sicherheitsauthentifizierung und API-Verwaltung verantwortlich. In vielen Anwendungsszenarien löst das API-Gateway nicht nur viele Probleme auf technischer Ebene, sondern erzielt auch Vorteile wie schnelle Iteration und flexible Erweiterung auf Geschäftsebene.

In diesem Artikel erfahren Sie, wie Sie mit der Go-Sprache ein Kong-basiertes API-Gateway erstellen, einschließlich der Verwendung von Kong zum Verwalten von APIs und Plugins sowie der Verwendung der Go-Sprache und der Kong-API zum Betreiben der Kong-Konfiguration.

1. Einführung in Kong

Kong ist ein Open-Source-API-Gateway, das eine vollständige Reihe von API-Verwaltungs- und Sicherheitsfunktionen bietet und in einer Vielzahl von Umgebungen ausgeführt werden kann. Es bietet hauptsächlich Verwaltungstools wie Lastausgleich, Diensterkennung, Routing, Authentifizierung, Autorisierung, Strombegrenzung, Überwachung und Plug-Ins. Kong verwendet Nginx als Proxyserver und nutzt den Plug-in-Mechanismus, um dem HTTP-Verkehr verschiedene erweiterte Funktionen hinzuzufügen. Die Plug-Ins von Kong können nach Bedarf aktiviert werden, sodass Kong verschiedene spezifische Geschäftsszenarien und -anforderungen erfüllen kann, weshalb es auch sehr beliebt ist.

2. Verwenden Sie Kong zum Verwalten von APIs und Plugins

  1. Installieren Sie Kong

Sie können über die Installationsanleitung auf der offiziellen Website von Kong verschiedene Umgebungen für die Installation auswählen. Hier ist Ubuntu als Beispiel:

$ echo "deb https://kong.bintray.com/kong-deb `lsb_release -sc` main" | sudo tee -a /etc/apt/sources.list
$ curl -o bintray.key https://bintray.com/user/downloadSubjectPublicKey?username=bintray
$ sudo apt-key add bintray.key
$ sudo apt-get update && sudo apt-get install -y kong

Nach erfolgreicher Installation wird die Kong-Konfigurationsdatei im /etc/kong-Verzeichnis generiert.

  1. Kong starten
$ kong start
  1. APIs verwalten

Verwenden Sie die Admin-API von Kong, um APIs zu verwalten.

$ curl -i -X POST 
  --url http://localhost:8001/apis/ 
  --data 'name=helloworld' 
  --data 'uris=/hello' 
  --data 'upstream_url=http://example.com/hello'

Das obige Beispiel erstellt über die Admin-API eine API mit dem Namen helloworld, der Routing-URI ist /hello und die Upstream-Serveradresse ist http://example.com/hello. Greifen Sie auf diese Weise einfach auf http://localhost zu :8000/hello , können Sie auf http://example.com/hello zugreifen.

  1. Plugins verwalten

Mit Kong können Sie ganz einfach Plugins hinzufügen und so die Funktionen der API weiter verbessern.

$ curl -i -X POST 
  --url http://localhost:8001/apis/helloworld/plugins/ 
  --data 'name=key-auth'

Das obige Beispiel fügt der helloworld-API über die Admin-API ein Plug-in namens „key-auth“ hinzu. Dieses Plugin wird zur Authentifizierung basierend auf dem API-Schlüssel verwendet.

3. Verwenden Sie die Go-Sprache und die Kong-API, um die Kong-Konfiguration zu verwalten.

Zusätzlich zur Verwendung der Admin-API zur Verwaltung von APIs und Plugins können Sie auch die von Kong bereitgestellte RESTful-API für eine detailliertere Steuerung verwenden. Sie ist vollständig konsistent Mit dem internen Datenmodell von Kong ist es bequemer, die Admin-API zu starten.

Hier verwenden wir die Go-Sprache und kombinieren sie mit dem Kong Client SDK, um die Kong-Konfiguration durchzuführen.

  1. install Kong Client sdk
$ go get github.com/Kong/go-kong/kong
  1. create Kong Konfiguration api und Route
conf := kong.Configuration{
  KongAdminURL: "http://localhost:8001", // Kong Admin接口地址
  KongURL: "http://localhost:8000", // Kong代理服务地址
}
    nach dem Erstellen können Sie den folgenden Code verwenden, um sie zu assoziieren:
  1. api := &kong.Api{
      Name: kong.String("helloworld"),
      RequestHost: kong.String("example.com"),
      UpstreamURL: kong.String("http://example.com/hello"),
    }
    
    route := &kong.Route{
      Name: kong.String("hello-route"),
      Paths: kong.StringSlice([]string{"/hello"}),
      Methods: kong.StringSlice([]string{"GET"}),
    }
  2. in auf diese Weise, a Der Name ist helloworld, der Routen-URI ist /hello, die Upstream-Serveradresse ist http://example.com/hello und auf die Route wird über eine GET-Anfrage zugegriffen.

Plugin hinzufügen

    Das Hinzufügen eines Plugins ist ebenfalls sehr einfach. Hier fügen wir ein Token-basiertes Authentifizierungs-Plugin für die Benutzerauthentifizierung hinzu. Der Code lautet wie folgt:
  1. service, err := kong.CreateServiceWithDefaults(conf, api) // 用默认配置创建Service
    if err != nil {
      panic(err)
    }
    
    route, err = kong.CreateRouteWithDefaults(conf, route, service)
    if err != nil {
      panic(err)
    }
  2. Hier verwenden wir den Plugin-Namen als JWT, damit wir die JWT-Authentifizierung hinzufügen können. Hier verwenden wir eine anonyme Authentifizierung.

Zusammenfassung

In diesem Artikel wird der Prozess zum Erstellen eines API-Gateways mithilfe der Go-Sprache und des Kong Client SDK vorgestellt. Mit Kong können Sie schnell ein API-Gateway erstellen, APIs und Plug-Ins verwalten und Funktionen wie Authentifizierung und Strombegrenzung implementieren. Kong kann mithilfe der Go-Sprache und des Kong Client SDK weiter gesteuert und verwaltet werden. Diese Tools können die Skalierbarkeit und Verwaltung von API-Gateways verbessern, sodass Microservices das Unternehmen besser unterstützen können.

Das obige ist der detaillierte Inhalt vonErstellen Sie ein API-Gateway mit der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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