我已经设置了一个快速应用程序,其中包括:
-
/ api / route1
-
/ api / route2
-
/ api / newroute
-
......
我需要将route / api / route2的请求重定向到/ api / newroute . 因此我使用res.redirect();为达到这个 . 它在我的本地开发环境中正常工作,其中应用程序托管在http://localhost/api上 . 对http://localhost/api/route2的请求成功重定向到http://localhost/api/newroute .
我们现在使用aws-serverless-express在无服务器/ lambda容器中部署了express应用程序 . 该应用程序由AWS在https://xxx.execute-api.us-east-1.amazonaws.com/production/api上托管 .
如果要求:
https://xxx.execute-api.us-east-1.amazonaws.com/production/api/route2
它被重定向到:
https://xxx.execute-api.us-east-1.amazonaws.com/api/newroute .
重定向失败,因为正确的 endpoints 现在应该是 /production / api / newroute .
我想避免在res.redirect()中硬编码中缀“/ production”;因为它会因环境而变化 .
因此我检查了是否
-
req.originalUrl
-
req.baseUrl
-
req.path
将提供中缀“/ production”,但事实并非如此 .
req.get('Host')也不提供“/ production”,因为它返回https://xxx.execute-api.us-east-1.amazonaws.com .
我是否可以获得托管应用程序的完整URL的其他选项?或者有更好的想法吗?
1 回答
我遇到了同样的问题 . 这是我的解决方案: