小强哥博客

小强哥,小强哥博客,技术大咖

spring cloud gateway踩坑记录(一)

由于项目需要,最近开始使用springgatway,这篇文章主要记录下遇到的坑。

springboot使用,如下,

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
    <relativePath/>
  </parent>

springcloud使用,如下,

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Finchley.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

第一个坑,和eureka结合时,通过路由访问出现404问题,配置如下,

return builder.routes()
        .route(
            r -> r.path("/v1/user/phone").and().host(campusHost).and()
                .method(
                    HttpMethod.GET)
                .uri("lb://pacaya")
        )
        .build();

后台服务接口,如下,可以访问,

http://127.0.0.1:8080/user/phone

路由地址,如下,出现404,

http://127.0.0.1:8080/v1/user/phone

解决方法,如下,

return builder.routes()
        .route(
            r -> r.path("/v1/user/phone").and().host(campusHost).and()
                .method(
                    HttpMethod.GET).filters(f -> f.stripPrefix(1))
                .uri("lb://pacaya")
        )
        .build();

在 https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.0.2.RELEASE/single/spring-cloud-gateway.html#_stripprefix_gatewayfilter_factory 有详细的说明,不多说。

这个特性和我们在zuul做路由的时候有些不一样。

完。