赋予客户微服务中的端点 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();
可行