Gateway网关转发demo
1.引入依赖包
-
<dependencies>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
-
<version>0.2.2.RELEASE</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework.cloud</groupId>
-
<artifactId>spring-cloud-starter-gateway</artifactId>
-
<version>2.0.1.RELEASE</version>
-
</dependency>
-
</dependencies>
不要导入web包,要不然会报下列错误:
Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type 'org.springframework.http.codec.ServerCodecConfigurer' that could not be found.
原因就是
因为SpringCloud gateway基于webflux实现的,不是基于SpringBoot-web,所以应该删除Springboot-web依赖组件。
2.bootstrap.yml新增配置
-
server:
-
###测试的时候,本地端口最好不要用80,容易出错
-
port: 9999
-
spring:
-
application:
-
name: test-gateway
-
cloud:
-
nacos:
-
discovery:
-
####开启以服务id去注册中心上获取转发地址
-
enabled: true
-
#注册发现使用nginx地址
-
server-addr: 10.211.55.16:9999
-
gateway:
-
routes:
-
###静态转发路由策略
-
- id: orderss
-
uri: http://www.百度.com/
-
###匹配规则
-
predicates:
-
- Path=/百度/**
-
###基于注册中心的路由策略
-
- id: member
-
#### 基于lb负载均衡形式转发,后面地址为注册中心的服务名称
-
uri: lb://member-service
-
filters:
-
#转发请求时去掉1级前缀,eg:http://localhost:9999/member/test?token=111中间的member字段会被清掉
-
- StripPrefix=1
-
###匹配规则
-
predicates:
-
- Path=/member/**
3.核心代码
启动下列就可以测试转发情况
-
@SpringBootApplication
-
public class GateWayApp {
-
public static void main(String[] args) {
-
SpringApplication.run(GateWayApp.class);
-
}
-
}
-
-
/**
-
* 读取头部信息,判断令牌是否存在,需要加入到容器中
-
*/
-
@Component
-
public class TokenFilter implements GlobalFilter {
-
@Override
-
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
-
String token = exchange.getRequest().getQueryParams().getFirst("token");
-
if (token == null || token.isEmpty()) {
-
ServerHttpResponse response = exchange.getResponse();
-
response.setStatusCode(HttpStatus.BAD_REQUEST);
-
String msg = "token not is null ";
-
DataBuffer buffer = response.bufferFactory().wrap(msg.getBytes());
-
return response.writeWith(Mono.just(buffer));
-
}
-
return chain.filter(exchange);
-
}
IDEA一键激活,两分钟搞定,白嫖真香_哔哩哔哩_bilibili
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggbkgg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01