Spring 引导 "redirect:/path" 不起作用 - 实际上返回字符串 "redirect:/path"

Spring Boot "redirect:/path" doesn't work - actually returning the String "redirect:/path"

我正在尝试从我的一个控制器重定向到另一个控制器。它应该使用关键字“redirect”,但我没有重定向到其他控制器,而是收到了这样的响应:

这是我的控制器:

@RestController
@Api(value = ConsentConstants.GET_HEALTH_V1, tags = {ConsentConstants.SWAGGER_API})
@Slf4j
@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class GetHealthController implements GetHealthApi {

  final Tracer tracer;

  @Override
  public Object getHealthCheck() {
    return "redirect:/actuator/health";
  }
}

我尝试重定向的原因是因为当我部署我的服务时健康检查(spring 引导执行器)不工作。在本地它工作正常,但在部署后我收到 401 未经授权的 /actuator/health 端点(其他端点工作正常)。所以我想尝试使用其中一个工作端点(例如 status/health 然后重定向到 /actuator/health)

我没有使用 Spring MVC,这有什么不同吗?

这种重定向方式仅适用于常规控制器,不适用于休息服务。无法解析名为 /actuator/health.

的 'view'

这仅在存在具有要解析的注册文件名的视图时有效:

return "redirect:registration";

要在 restcontroller 中重定向,您可以这样做:

@GetMapping("/healthcheck")
public void getHealthCheck(HttpServletResponse response) throws IOException {
  response.sendRedirect("/actuator/health");
}

但是,如果您只想更改 Spring 执行器的运行状况端点,请参阅 here

在application.properties中:

management.endpoints.web.base-path=/whatever
management.endpoints.web.path-mapping.health=healthcheck