如何配置网关筛选器以与微服务通信

时间:2019-08-09 08:05:38

标签: spring-boot microservices api-gateway

赋予客户微服务中的端点 POST / api / customers GET / api / loanapplications / customers / {customerId} POST / api / loanapplications < / strong>在贷款申请微服务中,如何配置API GATEWAY RouteLocator过滤器以接受适当的客户请求并将其转换为适当的服务:

当前方法:

@Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {

        return builder
                .routes()
                .route(r -> r.path("/api/customers/**")
                        .filters(f -> f.rewritePath("/api/customers/(.*)?", "/${remains}"))
                        .uri("lb://customer-microservice/")
                        .id("customer-microservice"))

                .route(r -> r.path("/api/loanapplications/**")
                        .filters(f -> f.rewritePath("/api/loanapplications/(.*)?", "/${remains}"))
                        .uri("lb://loan-application-microservice/")
                        .id("loan-application-microservice"))

                .route(r -> r.path("/api/loanapplications/customers/**")
                        .filters(f -> f.rewritePath("/api/loanapplications/customers(.*)?", "/${remains}"))
                        .uri("lb://loan-application-microservice/")
                        .id("loan-application-microservice"))
                .build(); 

用于客户微服务的REST端点和用于贷款申请微服务的Post方法可以通过GATEWAY API正常工作,但是用于贷款申请微服务的GET端点却不能。不知道为什么

更改为:

@Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {

        return builder
                .routes()

                .route(r -> r.path("/api/loanapplications/customers/**")
                        .filters(f -> f.rewritePath("/api/loanapplications/customers/(?<segment>.*)", "/api/loanapplications/customers/${segment}"))
                        .uri("lb://loan-application-microservice/")
                        .id("loan-application-microservice"))

                .route(r -> r.path("/api/loanapplications/**")
                        .filters(f -> f.rewritePath("/api/loanapplications/(.*)?", "/${remains}"))
                        .uri("lb://loan-application-microservice/")
                        .id("loan-application-microservice"))

                .route(r -> r.path("/api/customers/**")
                        .filters(f -> f.rewritePath("/api/customers/(.*)?", "/${remains}"))
                        .uri("lb://customer-microservice/")
                        .id("customer-microservice"))

                .build();

可行

0 个答案:

没有答案