go - 有没有一种方法可以使用 mux 路由来选择处理程序而不使用 golang 的 http listenAndServe?

标签 go lambda

golang 有很多 mux 路由器。我发现的所有这些都假设我正在构建自己的 HTTP 服务器。但是,我想使用 aws apigateway 作为外部层,并将方法、路径、查询参数转发到我用 apex 部署的 lambda 函数(对于 aws lambda 函数,go shim)。所有 API 网关端点都将转发到一个 lambda 函数,因此需要连接的东西更少,例如权限等。

所以我想使用不错的 mux 库,因为它们能够解析正则表达式或路径变量,但在 Lambda 中使用它们并能够根据 url 路径调用正确的处理程序。

大多数mux路由器都有这样的用法:

router := NewRouter()
router.Add("GET", "/my_path/:id", MyHandler)

其中 MyHandler 是一种 http.HandlerFunc

然后服务器启动类似http.ListenAndServe(port, router)

但是在 AWS Lambda 中没有要启动的服务器,我只想使用 mux 来找到我应该调用的处理程序。

最佳答案

我创建了一个 lib为此目的。

基本思路是将json对象的apigateway请求上下文转化为http.Request

关于go - 有没有一种方法可以使用 mux 路由来选择处理程序而不使用 golang 的 http listenAndServe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424899/

相关文章:

从服务器角度进行 HTTP 跟踪

google-app-engine - appengine dev_appserver 时间奇怪

go - 使用 golang Viper lib 进行高级配置

go - 如何更新AWS S3对象的ACL访问权限?

go - 如何知道结构或结构指针是否实现接口(interface)

c - 如何在纯 C 中包装函数指针

node.js - 处理 Postgres 表中所有数据的最快方法?

c# - Entity Framework 的集合值参数?

math - 取一些数据,返回一个纯分段函数

java - Lambda 将文件输入到数组中