SpringCloud gateway戻りデータの変更
3908 ワード
詳細
バージョンの説明
オープンソースソフトウェアバージョン
springboot
2.1.6.RELEASE
jdk
11.0.3
gradle
主にspringboot 2.1,lombokを導入しました
yaml
ルーティングおよびフィルタtest-routeルーティングを定義し、Pathが/usersの場合、uriで構成されているリンクに移動します.http://127.0.0.1:8123/usersに表示されます.UnionResultを使用してフィルタリング
filter
yamlに設定されているfilterの名前に「GatewayFilterFactory」を付けると、対応するフィルタJavaクラスになります
model
バージョンの説明
オープンソースソフトウェアバージョン
springboot
2.1.6.RELEASE
jdk
11.0.3
gradle
主にspringboot 2.1,lombokを導入しました
plugins {
id 'org.springframework.boot' version '2.1.6.RELEASE'
id 'java'
id "io.freefair.lombok" version "3.6.6"
}
apply plugin: 'io.spring.dependency-management'
group = 'cn.buddie.demo'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "Greenwich.SR2")
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
compile 'org.projectlombok:lombok:1.18.8'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
yaml
ルーティングおよびフィルタtest-routeルーティングを定義し、Pathが/usersの場合、uriで構成されているリンクに移動します.http://127.0.0.1:8123/usersに表示されます.UnionResultを使用してフィルタリング
spring:
cloud:
gateway:
enabled: true
routes:
- id: test-route
uri: http://127.0.0.1:8123/users
predicates:
- Path=/users
filters:
- UnionResult
filter
yamlに設定されているfilterの名前に「GatewayFilterFactory」を付けると、対応するフィルタJavaクラスになります
package cn.buddie.demo.springcloudgateway.filter;
import cn.buddie.demo.springcloudgateway.model.UnionResult;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.rewrite.ModifyResponseBodyGatewayFilterFactory;
import org.springframework.cloud.gateway.filter.factory.rewrite.RewriteFunction;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
/**
* description
*
* @author buddie.wei
* @date 2019/7/20
*/
@Component
public class UnionResultGatewayFilterFactory extends ModifyResponseBodyGatewayFilterFactory {
@Override
public GatewayFilter apply(Config config) {
return new ModifyResponseGatewayFilter(this.getConfig());
}
private Config getConfig() {
Config cf = new Config();
// Config.setRewriteFunction(Class inClass, Class outClass, RewriteFunction rewriteFunction)
// inClass , , Object, 。
// ,yaml ,path,uri
// outClass
// rewriteFunction
cf.setRewriteFunction(Object.class, UnionResult.class, getRewriteFunction());
return cf;
}
private RewriteFunction
model
package cn.buddie.demo.springcloudgateway.model;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
/**
* description
*
* @author buddie.wei
* @date 2019/7/20
*/
@Getter
@Setter
@Builder
public class UnionResult {
private String requestId;
private Object result;
}