GatewayConfig.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. fn.addRequestHeader("headerName","配置类配置的-headValue");
  31. //路径重写
  32. fn.rewritePath("/member-gateway/(?<segment>.*)","/member-provider/$\\{segment}");
  33. return fn;
  34. })
  35. //转发目标地址
  36. .uri("lb://member-service-provider");
  37. });
  38. return routes.build();
  39. }
  40. //@Bean
  41. public RouteLocator myRouteLocator02(RouteLocatorBuilder builder){
  42. RouteLocatorBuilder.Builder routes = builder.routes();
  43. routes.route("member10002",r->{
  44. //自定义断言
  45. //r.predicate(new GatewayPredicate() {
  46. // @Override
  47. // public boolean test(ServerWebExchange serverWebExchange) {
  48. // //断言是否为post请求方法
  49. // HttpMethod.POST.equals(serverWebExchange.getRequest().getMethod());
  50. // serverWebExchange.getRequest().getPath();
  51. // return false;
  52. // }
  53. //});
  54. return r.path("/member-gateway/member")
  55. .and()
  56. .method(HttpMethod.POST)
  57. .filters(fn->{
  58. return fn.rewritePath("/member-gateway/(?<segment>.*)","/member-provider/$\\{segment}");
  59. }).uri("http://localhost:10002");
  60. });
  61. return routes.build();
  62. }
  63. }