尝试在同一个项目中拥有 REST API 和前端应用程序

问题描述 投票:0回答:1

我有一个带有 REST 端点的 Spring Boot 应用程序,还有一个 VueJS 应用程序(以及一些 Vue 路由器逻辑)。问题是,例如,每当我点击 http://localhost:8080/information 时,我都需要使用 VueJS 逻辑重定向到 HTML 文件。如果请求 URI 以

/api/v1
开头,那么我想访问 REST 控制器。

我曾经使用 Spring Boot 过滤器完成此操作,但现在我不记得是如何实现的。

spring-boot vue.js vue-router spring-filter
1个回答
0
投票

我是如何实现它的:

    @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路由逻辑进入场景。这可以是一个列表,因为应用程序可以有多个路由。 对于任何其他请求,请继续并执行或放手。

© www.soinside.com 2019 - 2024. All rights reserved.