Parcourir la source

使用Gateway CacheRequestBody代替CacheRequestFilter

RuoYi il y a 11 mois
Parent
commit
79c885decb

+ 0 - 87
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/CacheRequestFilter.java

@@ -1,87 +0,0 @@
1
-package com.ruoyi.gateway.filter;
2
-
3
-import java.util.Collections;
4
-import java.util.List;
5
-import org.springframework.cloud.gateway.filter.GatewayFilter;
6
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
7
-import org.springframework.cloud.gateway.filter.OrderedGatewayFilter;
8
-import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
9
-import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
10
-import org.springframework.http.HttpMethod;
11
-import org.springframework.stereotype.Component;
12
-import org.springframework.web.server.ServerWebExchange;
13
-import reactor.core.publisher.Mono;
14
-
15
-/**
16
- * 获取body请求数据(解决流不能重复读取问题)
17
- * 
18
- * @author ruoyi
19
- */
20
-@Component
21
-public class CacheRequestFilter extends AbstractGatewayFilterFactory<CacheRequestFilter.Config>
22
-{
23
-    public CacheRequestFilter()
24
-    {
25
-        super(Config.class);
26
-    }
27
-
28
-    @Override
29
-    public String name()
30
-    {
31
-        return "CacheRequestFilter";
32
-    }
33
-
34
-    @Override
35
-    public GatewayFilter apply(Config config)
36
-    {
37
-        CacheRequestGatewayFilter cacheRequestGatewayFilter = new CacheRequestGatewayFilter();
38
-        Integer order = config.getOrder();
39
-        if (order == null)
40
-        {
41
-            return cacheRequestGatewayFilter;
42
-        }
43
-        return new OrderedGatewayFilter(cacheRequestGatewayFilter, order);
44
-    }
45
-
46
-    public static class CacheRequestGatewayFilter implements GatewayFilter
47
-    {
48
-        @Override
49
-        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
50
-        {
51
-            // GET DELETE 不过滤
52
-            HttpMethod method = exchange.getRequest().getMethod();
53
-            if (method == null || method == HttpMethod.GET || method == HttpMethod.DELETE)
54
-            {
55
-                return chain.filter(exchange);
56
-            }
57
-            return ServerWebExchangeUtils.cacheRequestBodyAndRequest(exchange, (serverHttpRequest) -> {
58
-                if (serverHttpRequest == exchange.getRequest())
59
-                {
60
-                    return chain.filter(exchange);
61
-                }
62
-                return chain.filter(exchange.mutate().request(serverHttpRequest).build());
63
-            });
64
-        }
65
-    }
66
-
67
-    @Override
68
-    public List<String> shortcutFieldOrder()
69
-    {
70
-        return Collections.singletonList("order");
71
-    }
72
-
73
-    static class Config
74
-    {
75
-        private Integer order;
76
-
77
-        public Integer getOrder()
78
-        {
79
-            return order;
80
-        }
81
-
82
-        public void setOrder(Integer order)
83
-        {
84
-            this.order = order;
85
-        }
86
-    }
87
-}

sql/ry_20250417.sql → sql/ry_20250425.sql


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
sql/ry_config_20250224.sql