【Spring Cloud Gateway】通过 Header-Accept 版本号转发请求

454 阅读1分钟

前言

由于需要实现多版本的 REST API 接口,因此需要使用到版本号。且想把版本号添加到 HTTP Header 里,格式为 Accept: 其他; version=1.0; 其他。我们这里使用 Spring Cloud Gateway 的路由实现。

配置路由

这里通过 Header=Accept, .*;? ?version=1\.0(|;.*) 实现路径匹配,其中 .*;? ?version=1\.0(|;.*) 是路径的匹配正则表达式,表示匹配版本参数 version=1.0

        # REST API 接口 v1
        - id: v1_rest_api_route
          predicates:
            - Path=/**
            - Header=Accept, .*;? ?version=1\.0(|;.*)
          filters:
            - name: RequestRateLimiter
              args:
                denyEmptyKey: true
                emptyKeyStatus: SERVICE_UNAVAILABLE
                keyResolver: '#{@ipAddressKeyResolver}'
                redis-rate-limiter.replenishRate: 10
                redis-rate-limiter.burstCapacity: 20
          uri: http://127.0.0.1:8084

使用

如下图所示。