如何在传入请求中捕获 gin.Context 以支持 Gin Router 虚拟主机?

问题描述

我正在编写一个实现 S3 REST API 的 API,特别是以一种允许您使用 Go S3 SDK 来调用 s3.CreateBucket 等函数的方式。

将我的 API 地址设置为 s3.Session 的端点并强制基于路径的主机样式,这按预期工作,但是 SDK 认为虚拟主机样式的 URI,我想支持这一点,因为看来基于路径的样式将在未来的某个时候贬值。

我的第一个想法是使用中间件捕获传入的请求,并从那里向正确的路由发送请求,因为路由及其处理程序函数都不会在逐个主机的基础上发生变化,但是由于 SDK 将请求发送到 ' bucketName.localhost:8000' 我只收到请求错误(没有这样的主机),我在中间件中设置的断点用于捕获传入的请求从未到达。

我已经读到一个可能的解决方案是为每个虚拟主机设置一个新路由器,但是这个问题甚至阻止了创建新存储桶(虚拟主机)的请求进入 Gin 路由器。

此外,为每个虚拟主机创建一个新的路由器可能有点矫枉过正,有什么方法可以让我的 Gin 路由器捕捉到任何虚拟主机的所有传入请求?

如果有人有任何意见或建议,我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)