Gateway网关配置完成
This commit is contained in:
30
gateway-service/pom.xml
Normal file
30
gateway-service/pom.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.example</groupId>
|
||||
<artifactId>SpringCloudStudy</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<groupId>org.example</groupId>
|
||||
<artifactId>gateway-service</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-gateway</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@@ -0,0 +1,18 @@
|
||||
package com.test;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* ClassName: GatewayApplication
|
||||
* Package: com.test
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/8/16 08:52
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class GatewayApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(GatewayApplication.class,args);
|
||||
}
|
||||
}
|
@@ -0,0 +1,44 @@
|
||||
package com.test.filter;
|
||||
|
||||
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
|
||||
import org.springframework.cloud.gateway.filter.GlobalFilter;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ClassName: filterTestFilter
|
||||
* Package: com.test
|
||||
*
|
||||
* @author yovinchen
|
||||
* @Create 2023/8/16 08:51
|
||||
*/
|
||||
@Component //需要注册为Bean
|
||||
public class TestFilter implements GlobalFilter , Ordered {
|
||||
@Override
|
||||
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
||||
//先获取ServerHttpRequest对象,注意不是HttpServletRequest
|
||||
ServerHttpRequest request = exchange.getRequest();
|
||||
//打印一下所有的请求参数
|
||||
System.out.println(request.getQueryParams());
|
||||
//判断是否包含test参数,且参数值为1
|
||||
List<String> value = request.getQueryParams().get("test");
|
||||
if(value != null && value.contains("1")) {
|
||||
//将ServerWebExchange向过滤链的下一级传递(跟JavaWeb中介绍的过滤器其实是差不多的)
|
||||
return chain.filter(exchange);
|
||||
}else {
|
||||
//直接在这里不再向下传递,然后返回响应
|
||||
return exchange.getResponse().setComplete();
|
||||
}
|
||||
}
|
||||
|
||||
//设置过滤等级(越小优先级越高)
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return 0;
|
||||
}
|
||||
}
|
28
gateway-service/src/main/resources/application.yml
Normal file
28
gateway-service/src/main/resources/application.yml
Normal file
@@ -0,0 +1,28 @@
|
||||
server:
|
||||
port: 8500
|
||||
eureka:
|
||||
instance:
|
||||
prefer-ip-address: true
|
||||
instance-id: ${spring.cloud.client.ip-address}:${server.port}
|
||||
client:
|
||||
service-url:
|
||||
defaultZone: http://localhost:8801/eureka, http://localhost:8802/eureka
|
||||
spring:
|
||||
application:
|
||||
name: gateway
|
||||
cloud:
|
||||
gateway:
|
||||
routes:
|
||||
- id: borrow-service
|
||||
uri: lb://borrowservice
|
||||
predicates:
|
||||
- Path=/borrow/**
|
||||
# 继续添加新的路由配置,这里就以书籍管理服务为例
|
||||
# 注意-要对齐routes:
|
||||
- id: book-service
|
||||
uri: lb://bookservice
|
||||
predicates:
|
||||
- Path=/book/**
|
||||
filters: # 添加过滤器
|
||||
- AddRequestHeader=Test, HelloWorld!
|
||||
# AddRequestHeader 就是添加请求头信息,其他工厂请查阅官网
|
Reference in New Issue
Block a user