如何在Swisscom Cloud中查看CloudFoundry目前是否停止了应用?标头X-Cf-Routererror可靠吗?

ssc*_*ep3 3 cloud-foundry swisscomdev

我们想在我们的前端添加一个维护页面,该页面应该在后端当前不可用时出现(例如停止或部署).当应用程序未运行时,将显示以下消息以及404状态代码:

404 Not Found: Requested route ('name.scapp.io') does not exist.
Run Code Online (Sandbox Code Playgroud)

此外,当应用程序停止时(仅此时),存在标题:

X-Cf-Routererror: unknown_route
Run Code Online (Sandbox Code Playgroud)

如果应用程序未运行,是否可靠地添加此标头?如果是这种情况,我可以使用此标志显示维护页面.


顺便说一句:5xx如果应用程序没有启动/崩溃,提供状态代码会不会更有意义,即停止的应用程序和错误的请求路由之间有什么不同?捕获503错误会更容易,因为它不会干扰我们的业务逻辑(404在应用程序内部使用).

Dan*_*usa 5

另一种选择是使用通配符路由.

https://docs.cloudfoundry.org/devguide/deploy-apps/routes-domains.html#create-an-http-route-with-wildcard-hostname

如果请求的路由不存在,则映射到通配符路由的应用程序将充当路由请求的回退应用程序.

因此,您可以将通配符路由映射到显示维护页面的静态应用程序.然后,如果映射到特定路由的应用程序已关闭或不可用,则将显示维护页面而不是404.

关于你的问题......

顺便说一下:如果应用程序没有启动/崩溃,提供5xx状态代码是不是更有意义,即停止的应用程序和错误的请求路由之间有什么不同?捕获503错误会更容易,因为它不会干扰我们的业务逻辑(404在应用程序内部使用).

GoRouter维护一个路由列表,用于将传入请求映射到应用程序.如果您的应用程序已关闭,那么路由表中没有路由,这就是您最终获得404的原因.如果您从GoRouter的角度考虑它,这是有道理的.没有路线,所以它返回404 Not Found.为了让503有意义,GoRouter必须知道应用程序,并知道它已关闭或没有响应.

我想如果您使用上面的通配符路径,您可能能够实现该行为,但不是显示维护页面而是让它返回HTTP 503.

希望有所帮助!