如何使用spring app和zuul proxy为SPA应用程序配置重定向到索引页面?

时间:2017-04-17 10:48:02

标签: java angularjs spring spring-boot proxy

我尝试使用spring boot和angular spa app。我需要将一些请求代理到另一台服务器。我已经使用此配置

配置了zuul代理
zuul.routes.api.path=/api/**
zuul.ignored-patterns=/api/products/**, /api/products-meta, /api/invoices, /api/products
zuul.routes.api.url=http://another-api-server/

在我的情况下,它完美地运行,一些API由我的应用程序提供,一些由另一台服务器提供。

接下来,当用户尝试通过直接链接访问我的应用时,我想配置重定向到索引页面,例如http://localhost/products/1

对于这种情况,我使用了这个IndexController

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

    @Controller
    public class IndexController {
        @RequestMapping("/**")
        public String index() {
            return "forward:/index.html";
        }
    }

但是我收到了此错误消息 White label error

这个堆栈跟踪 Gist

我的主要应用类

@EnableZuulProxy
@SpringBootApplication
public class Ng2bootApplication {

    public static void main(String[] args) {
        SpringApplication.run(Ng2bootApplication.class, args);
    }

    @Bean
    public ApiGatewayFilter simpleFilter() {
        return new ApiGatewayFilter();
    }
}

ApiGatewayFilter仅用于记录代理请求,没有别的。

public class ApiGatewayFilter extends ZuulFilter {

    private static Logger log = LoggerFactory.getLogger(ApiGatewayFilter.class);

    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();

        log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));

        return null;
    }
}

0 个答案:

没有答案