为什么我的Rocket框架健康检查端点返回404 Not Found错误?
问题原因
rocket_healthz::healthz!()宏默认生成的健康检查路由绑定的路径为/healthz,你在调用mount方法时指定了路由前缀为/actuator/health,两者拼接后实际生效的健康检查完整路径为http://127.0.0.1:11014/actuator/health/healthz,和你curl请求的路径不匹配,因此返回404错误。- 你也可以在Rocket服务启动时查看控制台打印的已挂载路由列表,确认所有接口的实际路径。
修复方案
根据你需要的访问路径可以选择以下任意一种方案:
方案1:调整挂载前缀,使用宏默认路径
如果可以接受访问路径后缀带/healthz,修改挂载的前缀为/actuator即可:
rocket_healthz::healthz!(); #[launch] fn rocket() -> _ { rocket::build() .mount("/actuator", routes![healthz]) }
修改后访问 http://127.0.0.1:11014/actuator/healthz 即可拿到健康检查结果。
方案2:自定义路由,精确匹配指定路径
如果需要严格使用/actuator/health作为访问路径,可以不用依赖第三方宏,自行实现简单的健康检查端点,兼容性更高:
#[get("/health")] fn health_check() -> &'static str { "ok" } #[launch] fn rocket() -> _ { rocket::build() .mount("/actuator", routes![health_check]) }
修改后直接访问你原来的curl地址即可正常返回结果。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

