我正在尝试将一个域的所有流量重定向到另一个域.我没有专门为此工作运行服务器,而是尝试使用带有lambda的AWS API Gateway来执行重定向.
我对根路径"/"的工作正常,但是没有处理任何子路径请求,例如/ a.有没有办法定义"catch all"资源或通配符路径处理程序?
Avi*_*lax 16
截至上周,API Gateway现在支持他们所谓的"Catch-all Path Variables".
详细信息和演练:API网关更新 - 新功能简化API开发
更新:截至上周,API Gateway现在支持他们所谓的"Catch-all Path Variables".请参阅API网关更新 - 新功能简化API开发.
不幸的是,您需要为每个级别创建资源.原因是API Gateway允许您通过对象访问这些参数.
例如: method.request.path.XXXX
因此,如果您这样做,/{param}您可以通过以下方式访问:method.request.path.param但如果您有嵌套路径(带斜杠的参数),则无效.您还可以获得整个请求的404.
如果method.request.path.param是一个数组而不是...那么它可以在没有命名时按位置获得params.例如method.request.path.param[]......命名的params甚至可以在那里处理,但访问它们并不是很容易.它需要使用某种JSON路径映射(想想你可以用它们的映射模板做什么).遗憾的是,这不是它在API网关中的处理方式.
我认为这没关系,因为这可能会使配置API网关变得更加复杂.但是,它也限制了API网关,并且为了处理这种情况,您最终将最终得到更混乱的配置.
所以,你可以走很远的路.为多个资源创建相同的方法,并执行以下操作:/{1}/{2}/{3}/{4}/{5}/{6}/{7}等等.然后,如果需要,您可以处理每个路径参数级别.
如果参数的数量总是相同的,那么你有点幸运,只需要设置一堆资源,但最后只需要一种方法.
来源:https://forums.aws.amazon.com/thread.jspa?messageID = 689700
您可以使用路径创建资源/{thepath+}.加号很重要.
然后在lambda函数中,您可以使用两者访问该值
event.path - 始终包含完整路径event.pathParameters.thepath- 包含您定义的部分.其他可能的用例:定义资源/images/{imagepath+},只匹配具有特定前缀的pathes.该变量仅包含子路径.您可以使用以下命令调试传递给函数的所有值: JSON.stringify(event)
与AWS最近推出的HTTP API相关,$default用作通配符来捕获与定义模式不匹配的所有路由。
有关更多详细信息,请参阅:宣布 Amazon API Gateway 的 HTTP API
| 归档时间: |
|
| 查看次数: |
14731 次 |
| 最近记录: |