crm开发定制路由的配置方式
crm开发定制路由是网关配置的基本组成模块,和Zuulcrm开发定制的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。
基础路由配置方式
如果请求的目标地址,是单个的URI资源路径,配置文件实例如下。
spring: application: name: api-gateway cloud: gateway: routes: - id: service1 uri: https://blog.csdn.net predicates: - Path=/csdn
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
各字段含义如下。
- id:我们自定义的路由 ID,保持唯一
- uri:目标服务地址
- predicates:路由条件,Predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(比如:与,或,非)。
上面这段配置的意思是,配置了一个 id 为 url-proxy-1的URI代理规则,路由的规则为,当访问地址http://localhost:8080/csdn时,会路由到地址https://blog.csdn.net。
基于代码的路由配置方式
转发功能同样可以通过代码来实现,我们可以在启动类 GateWayApplication 中添加方法 customRouteLocator() 来定制转发规则。
@SpringBootApplication@EnableDiscoveryClientpublic class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("path_route", r -> r.path("/csdn") .uri("https://blog.csdn.net")) .build(); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
和注册中心相结合的路由配置方式
在uri的schema协议部分为自定义的lb:类型,表示从注册中心(如Eureka)订阅服务,并且通过负载均衡进行服务的路由。代码如下。
server: port: 8080spring: application: name: api-gateway cloud: gateway: routes: - id: service1# uri: http://127.0.0.1:9001 uri: lb://cloud-payment-service predicates: - Path=/payment/**eureka: client: service-url: defaultZone: http://127.0.0.1:9004/eureka
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
注:这里cloud-payment-service是提前注册好的服务,且开放两个端口9000,9001供伦循使用。
注册中心相结合的路由配置方式,与单个URI的路由配置,区别其实很小,仅仅在于URI的schema协议不同。单个URI的地址的schema协议,一般为http或者https协议。启动多个支付微服务,会发现端口9000,9001轮流出现。