我有一个带有 REST 端点的 Spring Boot 应用程序,还有一个 VueJS 应用程序(以及一些 Vue 路由器逻辑)。问题是,例如,每当我点击 http://localhost:8080/information 时,我都需要使用 VueJS 逻辑重定向到 HTML 文件。如果请求 URI 以
/api/v1
开头,那么我想访问 REST 控制器。
我曾经使用 Spring Boot 过滤器完成此操作,但现在我不记得是如何实现的。
我是如何实现它的:
@Component
public class BackOfficeFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String requestURI = req.getRequestURI();
if(requestURI.contains("api")) {
filterChain.doFilter(request, response);
return;
}
if(requestURI.startsWith("/notfound")) {
req.getRequestDispatcher("/").forward(request, response);
return;
}
filterChain.doFilter(request, response);
}
}
如果请求以“/api”开头,则放开它并到达其余控制器。如果 reuqest 以“/notfound”或任何其他 vue 路由开头,则转发到“/”。这将使浏览器加载索引 html 文件但保留 vue 路由。这将使vue路由逻辑进入场景。这可以是一个列表,因为应用程序可以有多个路由。 对于任何其他请求,请继续并执行或放手。