1.新建一个springboot 的maven工程,添加相应的依赖:
添加依赖时的坑:
1).不能添加web依赖,会造成启动错误,要使用web时可以去添加webflux依赖
2).添加eureka注册服务依赖时,不能写成server,要写成client,否则也会启动不了
测试案例只需要添加简单的两个依赖:
<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>
2.如果要实现热部署就添加devtools依赖,eclipse中添加这个依赖就可以
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
3.配置文件:
这里遇到的大坑
1.在通过注册中心发现服务并跳转时
一定要记得通过serverid访问另外一个服务时加上官方过滤器,
- id: FEGINTESTSERVICE #网关路由
uri: lb://FEGINTESTSERVICE
order: 8000
predicates:
- Path=/fg/**
filters:
- StripPrefix=1
# 解释: stripPrefix的值表示在跳转到serverid对应的服务时会去掉最前面的一级路径/fg,
当我们在浏览器输入localhost:8760/fg/hello,会跳转到对应的serverid对应eureka的注册服务(FEGINTESTSERVICE ),
访问测试中路由localhost:8765/hello,这就是StripPrefix的作用,如果你有更多个需要去掉的层级,改变对应的值就行
比如请求/name/bar/foo,去除掉前面两个前缀之后,最后转发到目标服务的路径为/foo
当然如果你想在前面添加前缀可以用:
filters:
- PrefixPath=/mypath
这样就可以了,比如:请求/hello,最后转发到目标服务的路径变为/mypath/hello