GatewayConfig.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package anyi.space.memberConsumer.config;
  2. import org.springframework.cloud.gateway.route.RouteLocator;
  3. import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.http.HttpMethod;
  7. /**
  8. * @ProjectName: distributedSystemLearn
  9. * @FileName: GatewayConfig
  10. * @Author: 杨逸
  11. * @Data:2025/9/10 16:33
  12. * @Description: gateway配置类
  13. */
  14. @Configuration
  15. public class GatewayConfig {
  16. @Bean
  17. public RouteLocator myRouteLocator01(RouteLocatorBuilder builder){
  18. //根据配置文件改写为配置类的形式
  19. RouteLocatorBuilder.Builder routes = builder.routes();
  20. routes.route("member10001",r-> {
  21. return r
  22. //路径断言
  23. .path("/member-gateway/member")
  24. .and()
  25. //请求方法断言
  26. .method(HttpMethod.GET)
  27. //过滤器重写路径
  28. .filters(fn ->{
  29. //路径重写
  30. return fn.rewritePath("/member-gateway/(?<segment>.*)","/member-provider/$\\{segment}");
  31. })
  32. //转发目标地址
  33. .uri("http://localhost:10001");
  34. });
  35. return routes.build();
  36. }
  37. @Bean
  38. public RouteLocator myRouteLocator02(RouteLocatorBuilder builder){
  39. RouteLocatorBuilder.Builder routes = builder.routes();
  40. routes.route("member10002",r->{
  41. //自定义断言
  42. //r.predicate(new GatewayPredicate() {
  43. // @Override
  44. // public boolean test(ServerWebExchange serverWebExchange) {
  45. // //断言是否为post请求方法
  46. // HttpMethod.POST.equals(serverWebExchange.getRequest().getMethod());
  47. // serverWebExchange.getRequest().getPath();
  48. // return false;
  49. // }
  50. //});
  51. return r.path("/member-gateway/member")
  52. .and()
  53. .method(HttpMethod.POST)
  54. .filters(fn->{
  55. return fn.rewritePath("/member-gateway/(?<segment>.*)","/member-provider/$\\{segment}");
  56. }).uri("http://localhost:10002");
  57. });
  58. return routes.build();
  59. }
  60. }