Я использую SAM. Следующая настройка работает:
Function:
Type: AWS::Serverless::Function
Properties:
CodeUri: ./code/
Runtime: go1.x
MemorySize: 64
Handler: main
Events:
TesstApi:
Type: Api
Properties:
Path: /{proxy+}
Method: any
Теперь у меня есть основной метод (в go)
Это выглядит так:
package main
import (
"context"
"log"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
ginadapter "github.com/awslabs/aws-lambda-go-api-proxy/gin"
"github.com/gin-gonic/gin"
)
var ginLambda *ginadapter.GinLambda
func Handler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
if ginLambda == nil {
// stdout and stderr are sent to AWS CloudWatch Logs
log.Printf("Gin cold start")
r := gin.Default()
r.GET("/", Index)
r.GET("/test/hello", xxx)
r.GET("/test/hi", xxx)
ginLambda = ginadapter.New(r)
}
return ginLambda.ProxyWithContext(ctx, req)
}
func main() {
lambda.Start(Handler)
}
Это работает нормально. Поэтому я могу запустить свой локальный API-шлюз с SAM, и curl 127.0.0.1:3000/test/hello
работает хорошо
Теперь я пытаюсь обновить следующее предложение в моем шаблоне:
Properties:
Path: /{proxy+}
Method: any
до
Properties:
Path: /test/{proxy+}
Method: any
Я хочу поймать все после пути test
.
Я попробовал следующее:
r.GET("/hello", xxx)
r.GET("hello", xxx)
r.GET("/test/hello", xxx)
, но ни один из них не сработал.
Возможно ли то, что я хочу сделать? Если да, то как?