Menggunakan AWS API Gateway dalam Go: Panduan Lengkap

WBOY
Lepaskan: 2023-06-17 16:26:19
asal
1357 orang telah melayarinya

Dengan populariti dan pembangunan pengkomputeran awan, semakin banyak aplikasi mula menggunakan penyedia perkhidmatan awan untuk mencapai penggunaan dan pengurusan yang cekap. Sebagai salah satu penyedia perkhidmatan pengkomputeran awan terbesar di dunia, Gerbang API AWS ialah salah satu komponen utama untuk merealisasikan perkhidmatan awan. Artikel ini akan memperkenalkan cara menggunakan AWS API Gateway dalam bahasa Go untuk membina perkhidmatan awan yang cekap.

Langkah 1: Cipta Gerbang API

Sebelum menggunakan Gerbang API AWS, anda perlu mencipta Gerbang API pada konsol AWS. Mula-mula pilih perkhidmatan Gerbang API dalam konsol AWS, dan kemudian ikut arahan untuk mencipta API. Langkah-langkah untuk mencipta API termasuk mentakrifkan nama API, mencipta sumber, mentakrifkan kaedah GET dan POST, dsb.

Antaranya, menentukan nama API adalah sangat mudah, anda hanya perlu mengisinya mengikut arahan. Mencipta sumber memerlukan penentuan laluan dan kaedah URL Contohnya, anda boleh menentukan laluan URL "/hello" dan kaedah GET. Tambahkan beberapa penyepaduan pada setiap kaedah, seperti fungsi Amazon Lambda atau perkhidmatan awan lain.

Langkah 2: Gunakan API Gateway dalam Go

Menggunakan API Gateway dalam bahasa Go perlu dilaksanakan menggunakan SDK yang disediakan secara rasmi oleh AWS. Mula-mula, anda perlu memasang AWS SDK Go, yang boleh dimuat turun melalui kaedah berikut:

go get github.com/aws/aws-sdk-go
Salin selepas log masuk

Untuk menggunakan API Gateway dalam program Go, anda perlu menggunakan API yang disediakan oleh AWS SDK Go. Mula-mula anda perlu membina klien API Gateway, contohnya:

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)
Salin selepas log masuk

Selepas mencipta klien API Gateway, anda perlu menentukan sumber dan kaedah dalam API dan kaedah penyepaduan, contohnya:

// 资源和方法
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))
}
Salin selepas log masuk

Dalam coretan kod ini Sumber dan kaedah ditakrifkan dan kaedah penyepaduan Lambda ditambah. Templat reaktif dan bersepadu reaktif juga ditakrifkan.

Langkah 3: Uji Gerbang API

Selepas melengkapkan penciptaan Gerbang API dan menulis program Go, anda perlu menguji sama ada Gerbang API berfungsi dengan betul. Menggunakan Posman atau klien HTTP lain, anda boleh menghantar permintaan kepada API dan menerima respons. Sebagai contoh, gunakan arahan berikut untuk menghantar permintaan POST ke API:

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
Salin selepas log masuk

Selepas berjaya menguji Gerbang API, anda boleh menggunakan aplikasi Go dan menyepadukannya dengan Gerbang API untuk mencapai perkhidmatan awan yang cekap.

Ringkasan

Artikel ini menyediakan panduan lengkap untuk menggunakan AWS API Gateway dalam bahasa Go. Anda perlu mencipta Gerbang API dan menentukan sumber dan kaedah, kaedah penyepaduan, respons dan templat tindak balas penyepaduan. Tugasan ini boleh dicapai dengan mudah menggunakan AWS SDK Go. Selepas menguji Gerbang API dan menyepadukan aplikasi Go anda dengannya, anda boleh membina perkhidmatan awan yang cekap dalam persekitaran awan AWS.

Atas ialah kandungan terperinci Menggunakan AWS API Gateway dalam Go: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!