cannot use req (variable of type events.APIGatewayProxyRequest) as core.SwitchableAPIGatewayRequest value in argument to adapter.ProxyWithContext

huangapple go评论115阅读模式
英文:

cannot use req (variable of type events.APIGatewayProxyRequest) as core.SwitchableAPIGatewayRequest value in argument to adapter.ProxyWithContext

问题

我是你的中文翻译助手,以下是翻译好的内容:

我对Golang还不熟悉。我似乎无法提供适用于adapter.ProxyWithContext的参数。根据这个链接https://pkg.go.dev/github.com/awslabs/aws-lambda-go-api-proxy@v0.13.0/gorillamux#GorillaMuxAdapter.ProxyWithContext,它应该接受API Gateway代理事件或API Gateway V2事件。

  1. package main
  2. import (
  3. "context"
  4. "github.com/aws/aws-lambda-go/events"
  5. "github.com/aws/aws-lambda-go/lambda"
  6. routerProxy "github.com/awslabs/aws-lambda-go-api-proxy/gorillamux"
  7. )
  8. var adapter *routerProxy.GorillaMuxAdapter
  9. func main() {
  10. cfg := config.NewConfig()
  11. s := app.NewApp(cfg, log)
  12. adapter = routerProxy.New(s.SetupRoutes())
  13. lambda.Start(lambdaHandler) // 执行lambda和特定的lead处理程序
  14. }
  15. func lambdaHandler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
  16. c, err := adapter.ProxyWithContext(ctx, req)
  17. return c, err
  18. }
  19. 我遇到了这个错误
  20. ``var req events.APIGatewayProxyRequest
  21. cannot use req (variable of type events.APIGatewayProxyRequest) as core.SwitchableAPIGatewayRequest value in argument to adapter.ProxyWithContextcompilerIncompatibleAssign
英文:

I'm new to Golang. I can't seem to supply the argument needed to work with adapter.ProxyWithContext. According to this https://pkg.go.dev/github.com/awslabs/aws-lambda-go-api-proxy@v0.13.0/gorillamux#GorillaMuxAdapter.ProxyWithContext it should accept API Gateway proxy event or API Gateway V2 event.

  1. import (
  2. "context"
  3. "github.com/aws/aws-lambda-go/events"
  4. "github.com/aws/aws-lambda-go/lambda"
  5. routerProxy "github.com/awslabs/aws-lambda-go-api-proxy/gorillamux"
  6. )
  7. var adapter *routerProxy.GorillaMuxAdapter
  8. func main() {
  9. cfg := config.NewConfig()
  10. s := app.NewApp(cfg, log)
  11. adapter = routerProxy.New(s.SetupRoutes())
  12. lambda.Start(lambdaHandler) // execute lambda and the specific lead handler
  13. }
  14. func lambdaHandler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
  15. c, err := adapter.ProxyWithContext(ctx, req)
  16. return c, err
  17. }
  18. i'm having this error:
  19. ``var req events.APIGatewayProxyRequest
  20. cannot use req (variable of type events.APIGatewayProxyRequest) as core.SwitchableAPIGatewayRequest value in argument to adapter.ProxyWithContextcompilerIncompatibleAssign
  21. </details>
  22. # 答案1
  23. **得分**: 1
  24. 如评论者[mkopriva](https://stackoverflow.com/users/965900/mkopriva)所指出的,你不能直接将`events.APIGatewayProxyRequest`传递给`adapter.ProxyWithContext`。
  25. 你需要创建一个新的`SwitchableAPIGatewayRequest`实例,并将其传递给`ProxyWithContext`
  26. 这样应该可以解决你的问题:
  27. ```go
  28. import "github.com/awslabs/aws-lambda-go-api-proxy/core"
  29. [...]
  30. func lambdaHandler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
  31. return adapter.ProxyWithContext(ctx, *core.NewSwitchableAPIGatewayRequestV1(&req))
  32. }
英文:

As commenter mkopriva noted, you can not directly pass the events.APIGatewayProxyRequest to adapter.ProxyWithContext.

You need to create a new instance of SwitchableAPIGatewayRequest and pass it to ProxyWithContext.

This should fix your issue:

  1. import &quot;github.com/awslabs/aws-lambda-go-api-proxy/core&quot;
  2. [...]
  3. func lambdaHandler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
  4. return adapter.ProxyWithContext(ctx, *core.NewSwitchableAPIGatewayRequestV1(&amp;req))
  5. }

huangapple
  • 本文由 发表于 2022年3月24日 23:02:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/71604856.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定