Spring RedirectAttributes 不适用于@PostMapping(value = { "/", "/{id}" })

Spring RedirectAttributes not working with @PostMapping(value = { "/", "/{id}" })

我有一个这样的控制器:

@PostMapping(value = { "/" })
public String home(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
return "redirect:/index.html?xyz=abc";
}

它正在将请求重定向到 Angular 应用程序并且按预期工作。 但是一旦我将 PostMapping 注释更改为:

@PostMapping(value = { "/", "/{id}" })

它开始在 chrome 控制台中给我一个 405 错误:

Failed to load resource: the server responded with a status of 405 () https://My_IP/index.html?xyz=abc

任何人都可以建议我在这里缺少什么吗? 是否需要在 Java 端或 Angular 端进行修复?

Angular版本:8.1.3

重定向属性来自org.springframework.web.servlet.mvc.support.RedirectAttributes

在 @post 映射中添加“/{id}”后,系统会尝试将 get 重定向请求与 /id 本身相匹配,因为它假定“index.html”为 id . 因为它是一个 get 重定向,而 /id 是一个 post 请求,它给出了 405 错误。

我通过不直接使用“/”,而是添加一个 API 名称来避免这个问题,如下所示:

 @PostMapping(value = { "/home", "/home/{id}" })

在此之后,系统没有尝试将 https:///My_IP/index.html?xyz=abc 请求匹配到 /home 或 /home/id.