spring cloud gateway 의 stripPrefix 설정
본 고 는 주로 spring cloud gateway 의 stripPrefix 설정 을 연구 하고 자 한다.
zuul 설정 사용 하기
zuul:
routes:
demo:
sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods
path: /demo/**
stripPrefix: true
url: http://demo.com.cn/
이 곳 의 stripPrefix 는 기본적으로 true 입 니 다. 즉, 모든 / demo / xxxx 요청 을 전달 합 니 다.http://demo.com.cn/xxxx demo 접두사 제거
spring cloud gateway 설정 사용 하기
spring:
cloud:
gateway:
default-filters:
- AddResponseHeader=X-Response-Default-Foo, Default-Bar
routes:
- id: demo
uri: http://demo.com.cn:80
order: 8999 ##
predicates:
- Path=/demo/**
filters:
- RewritePath=/demo/(?.*), /$\{segment}
spring cloud gateway 는 기 존의 stripPrefix 설정 이 없 는 것 같 지만 rewritepath 를 통 해 이 루어 질 수 있 습 니 다.
spring-cloud-gateway-core-2.0.0.M6-sources.jar!/org/springframework/cloud/gateway/filter/factory/RewritePathGatewayFilterFactory.java
public class RewritePathGatewayFilterFactory implements GatewayFilterFactory {
public static final String REGEXP_KEY = "regexp";
public static final String REPLACEMENT_KEY = "replacement";
@Override
public List argNames() {
return Arrays.asList(REGEXP_KEY, REPLACEMENT_KEY);
}
@Override
public GatewayFilter apply(Tuple args) {
final String regex = args.getString(REGEXP_KEY);
String replacement = args.getString(REPLACEMENT_KEY).replace("$\\", "$");
return apply(regex, replacement);
}
public GatewayFilter apply(String regex, String replacement) {
return (exchange, chain) -> {
ServerHttpRequest req = exchange.getRequest();
addOriginalRequestUrl(exchange, req.getURI());
String path = req.getURI().getPath();
String newPath = path.replaceAll(regex, replacement);
ServerHttpRequest request = mutate(req)
.path(newPath)
.build();
exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, request.getURI());
return chain.filter(exchange.mutate().request(request).build());
};
}
}
주로 이 String newPath = path. replaceAll (regex, replacement) 입 니 다. 여 기 는 regex 가 / demo / (?. *) 이 고 replacement 은 / ${segment} 입 니 다.
작은 매듭
spring cloud gateway 는 RewritePath 를 이용 하여 원래 의 zuul 의 strip Prefix 효 과 를 실현 할 수 있 고 기능 이 더욱 강하 다.
doc
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.