Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden von AWS API Gateway in Go: Eine vollständige Anleitung

Verwenden von AWS API Gateway in Go: Eine vollständige Anleitung

WBOY
WBOYOriginal
2023-06-17 16:26:191375Durchsuche

Mit der Popularität und Entwicklung des Cloud Computing beginnen immer mehr Anwendungen, Cloud-Dienstanbieter zu nutzen, um eine effiziente Bereitstellung und Verwaltung zu erreichen. Als einer der weltweit größten Cloud-Computing-Dienstleister ist das API Gateway von AWS eine der Schlüsselkomponenten für die Realisierung von Cloud-Diensten. In diesem Artikel wird erläutert, wie Sie AWS API Gateway in der Go-Sprache verwenden, um effiziente Cloud-Dienste zu erstellen.

Schritt 1: API-Gateway erstellen

Bevor Sie AWS API Gateway verwenden, müssen Sie ein API-Gateway auf der AWS-Konsole erstellen. Wählen Sie zunächst den API Gateway-Dienst in der AWS-Konsole aus und befolgen Sie dann die Anweisungen zum Erstellen einer API. Zu den Schritten zum Erstellen einer API gehören das Definieren des API-Namens, das Erstellen von Ressourcen, das Definieren von GET- und POST-Methoden usw.

Dabei ist die Definition des API-Namens sehr einfach, Sie müssen ihn nur entsprechend den Eingabeaufforderungen ausfüllen. Zum Erstellen von Ressourcen müssen URL-Pfade und -Methoden definiert werden. Sie können beispielsweise einen URL-Pfad „/hello“ und eine GET-Methode definieren. Fügen Sie für jede Methode eine Integration hinzu, beispielsweise eine Amazon Lambda-Funktion oder einen anderen Cloud-Dienst.

Schritt 2: API Gateway in Go verwenden

Die Verwendung von API Gateway in der Go-Sprache erfordert die Verwendung des offiziell von AWS bereitgestellten SDK. Zuerst müssen Sie AWS SDK Go installieren, das über die folgenden Methoden heruntergeladen werden kann:

go get github.com/aws/aws-sdk-go

Die Verwendung von API Gateway in Go-Programmen erfordert die Verwendung der von AWS SDK Go bereitgestellten API. Zuerst müssen Sie den API Gateway-Client erstellen, zum Beispiel:

import (
    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/apigateway"
)

session := session.Must(session.NewSession(&aws.Config{
    Region: aws.String("us-west-2"),
}))
svc := apigateway.New(session)

Nach dem Erstellen des API Gateway-Clients müssen Sie die Ressourcen und Methoden in der API und die Integrationsmethode definieren, zum Beispiel:

// 资源和方法
id := "abcde12345"
restAPI := "my-restapi-id"
resourcePath := "/hello"
method := "POST"
contentType := "application/json"

// 定义Lambda函数攻略
integration := &apigateway.Integration{
    IntegrationHttpMethod: aws.String("POST"),
    Type:                  aws.String("AWS_PROXY"),
    Uri:                   aws.String("arn:aws:lambda:us-west-2:MyAccount:function:my-lambda-function"),
}

// 添加方法
params := &apigateway.PutMethodInput{
    RestApiId:    aws.String(restAPI),
    ResourceId:   aws.String(id),
    HttpMethod:   aws.String(method),
    AuthorizationType: aws.String("NONE"),
}

_, err := svc.PutMethod(params)
if err != nil {
    panic(fmt.Sprintf("failed to add method to API Gateway, err: %s", err))
}

// 添加Lambda集成方式
params2 := &apigateway.PutIntegrationInput{
    RestApiId: aws.String(restAPI),
    ResourceId:    aws.String(id),
    HttpMethod:    aws.String(method),
    Integration:   integration,
}

_, err2 := svc.PutIntegration(params2)
if err2 != nil {
    panic(fmt.Sprintf("failed to add integration to API Gateway, err: %s", err2))
}

// 添加响应模版
params3 := &apigateway.PutMethodResponseInput{
    RestApiId:         aws.String(restAPI),
    ResourceId:        aws.String(id),
    HttpMethod:        aws.String(method),
    StatusCode:        aws.String("200"),
    ResponseParameters: map[string]*bool{},
    ResponseModels:    map[string]*string{contentType: aws.String("Empty")},
}
_, err3 := svc.PutMethodResponse(params3)
if err3 != nil {
    panic(fmt.Sprintf("failed to add method response to API Gateway, err: %s", err3))
}

// 更新集成响应模版
params4 := &apigateway.PutIntegrationResponseInput{
    RestApiId: aws.String(restAPI),
    ResourceId:        aws.String(id),
    HttpMethod:        aws.String(method),
    StatusCode:        aws.String("200"),
    ResponseTemplates: map[string]*string{contentType: aws.String("")},
}
_, err4 := svc.PutIntegrationResponse(params4)
if err4 != nil {
    panic(fmt.Sprintf("failed to add integration response to API Gateway, err: %s", err4))
}

Eine Ressource und eine Methode sind in diesem Codeausschnitt definiert und Lambda-Integrationsmethode hinzugefügt. Es werden auch Antwort- und integrierte Antwortvorlagen definiert.

Schritt 3: Testen Sie das API-Gateway

Nachdem Sie die Erstellung des API-Gateways abgeschlossen und das Go-Programm geschrieben haben, müssen Sie testen, ob das API-Gateway ordnungsgemäß funktioniert. Mit Postman oder einem anderen HTTP-Client können Sie Anfragen an die API senden und Antworten erhalten. Verwenden Sie beispielsweise den folgenden Befehl, um eine POST-Anfrage an die API zu senden:

curl --header "Content-Type: application/json" 
     --request POST 
     --data '{"name":"John","age":30}' 
     https://my-gateway-id.execute-api.us-west-2.amazonaws.com/hello

Nachdem Sie das API Gateway erfolgreich getestet haben, können Sie die Go-Anwendung bereitstellen und in das API Gateway integrieren, um effiziente Cloud-Dienste zu erreichen.

Zusammenfassung

Dieser Artikel bietet eine vollständige Anleitung zur Verwendung von AWS API Gateway in der Go-Sprache. Sie müssen ein API-Gateway erstellen und Ressourcen und Methoden, Integrationsmethoden, Antworten und Integrationsantwortvorlagen definieren. Diese Aufgaben können einfach mit dem AWS SDK Go gelöst werden. Nachdem Sie das API Gateway getestet und Ihre Go-Anwendung darin integriert haben, können Sie effiziente Cloud-Dienste in der AWS-Cloud-Umgebung erstellen.

Das obige ist der detaillierte Inhalt vonVerwenden von AWS API Gateway in Go: Eine vollständige Anleitung. 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