springcloud api网关属性文件声明变量

Posted

技术标签:

【中文标题】springcloud api网关属性文件声明变量【英文标题】:springcloud api gateway properties file declaring variables 【发布时间】:2021-02-16 21:06:15 【问题描述】:

我在 springboot 应用中有 application.yaml,如下所示

spring:
  cloud:
    gateway:
      routes:
      - id: pgService
        uri: http://localhost:2005/
        predicates:
        - Path=/employee/**
      - id: inMateService
        uri: http://localhost:2006/
        predicates:
        - Path=/consumer/**

上面声明的变量是针对spring cloud gateway的

我想在 application.properties 文件中声明这些相同的变量。 我不想使用 yaml 文件。请帮助我实现这一目标 谢谢

【问题讨论】:

【参考方案1】:

刚刚更新了答案。

应该更类似于这种格式:

spring.cloud.gateway.discovery.locator.predicates[0].name: Path
spring.cloud.gateway.discovery.locator.predicates[0].args[pattern]: "'/'+serviceId+'/**'"
spring.cloud.gateway.discovery.locator.predicates[1].name: Host
spring.cloud.gateway.discovery.locator.predicates[1].args[pattern]: "'**.foo.com'"
spring.cloud.gateway.discovery.locator.filters[0].name: Hystrix
spring.cloud.gateway.discovery.locator.filters[0].args[name]: serviceId
spring.cloud.gateway.discovery.locator.filters[1].name: RewritePath
spring.cloud.gateway.discovery.locator.filters[1].args[regexp]: "'/' + serviceId + '/(?<remaining>.*)'"
spring.cloud.gateway.discovery.locator.filters[1].args[replacement]: "'/$remaining'"

参考。 https://cloud.spring.io/spring-cloud-gateway/multi/multi__configuration.html


如果您使用的是 intelliJ,下面的插件对于在 .yaml 和 .properties 之间转换格式非常有帮助: https://plugins.jetbrains.com/plugin/13804-convert-yaml-and-properties-file

【讨论】:

【参考方案2】:

您可以在application.properties 文件中定义如下变量:

spring.cloud.gateway.routes[0].id=pgService
spring.cloud.gateway.routes[0].uri=http://localhost:2005/
spring.cloud.gateway.routes[0].predicates[0]=Path=/employee/**
spring.cloud.gateway.routes[1].id=inMateService
spring.cloud.gateway.routes[1].uri=http://localhost:2006/
spring.cloud.gateway.routes[1].predicates[0]=Path=/consumer/**

【讨论】:

【参考方案3】:

它对我有用


spring.cloud.gateway.routes[0].id=USER-SERVICE
spring.cloud.gateway.routes[0].uri=lb://USER-SERVICE
spring.cloud.gateway.routes[0].predicates[0].name=Path
spring.cloud.gateway.routes[0].predicates[0].args[pattern]=/user/**

spring.cloud.gateway.routes[1].id=USER-SERVICE
spring.cloud.gateway.routes[1].uri=lb://USER-SERVICE
spring.cloud.gateway.routes[1].predicates[0].name=Path
spring.cloud.gateway.routes[1].predicates[0].args[pattern]=/department/**

【讨论】:

以上是关于springcloud api网关属性文件声明变量的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud:服务网关zuul-API网关

SpringCloud—网关简述

Spring Cloud 网关重定向

springcloud实践之api网关:zuul

API网关:SpringCloud Gateway

精通springcloud:使用API网关进行路由和过滤