1. 依赖
-
依赖
<dependencies> <!-- 网关 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> </dependencies>
-
说明
-
父依赖
<properties> <spring-cloud.version>Hoxton.SR3</spring-cloud.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
-
spring-cloud-getaway
不使用web
作为服务器,而是使用WebFlux
(已经依赖,不需要额外添加依赖)作为服务器,一定不能依赖spring-boot-starter-web
-
需要从注册中心拉取服务,依赖
spring-cloud-starter-alibaba-nacos-discovery
<dependencies> <!-- nacos 注册中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
-
2. 配置文件
-
主配置文件
application.yml
server: # 程序端口 port: 8185 spring: profiles: # 注册 application-nacos.yml、application-getway.yml 配置文件 active: nacos,getaway
-
nacos
配置文件application-nacos.yml
spring: application: # 注册到 nacos 注册中心的服务名 name: web-api-getaway cloud: nacos: discovery: # nacos 注册中心的地址 server-addr: 120.25.207.44:8848
-
getaway
配置文件application-getaway.yml
spring: cloud: # 路由网关配置 gateway: # 设置与服务注册发现组件结合,这样可以采用服务名的路由策略 discovery: locator: enabled: true routes: # 采用自定义路由 ID(有固定用法,不同的 id 有不同的功能 # 可以配置很多的路由信息,但是每个路由都有一个唯一的 id 来标识 - id: web-service # 采用 LoadBalanceClient 方式请求,以 lb:// 开头定位到微服务中的某个服务,后面的是注册在 Nacos 上的服务名 uri: lb://web-service # Predicate 翻译过来是“谓词”的意思,必须,主要作用是匹配用户的请求,有很多种用法 predicates: # Path 配置请求的路径,多个路径可以用逗号隔开。 # /test/** 对应在 nacos 注册的 web-service 这个服务下,访问路径为 /test 下面的所有的方法 - Path=/test/** # Method 方法谓词,这里是匹配 GET 和 POST 请求 # 请求的方式,大小写不敏感 - Method=GET,POST
3. 启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
// 开启 nacos 注册中心扫描,发现该服务
@EnableDiscoveryClient
@SpringBootApplication
public class WebApiGetawayApplication {
public static void main(String[] args) {
SpringApplication.run(WebApiGetawayApplication.class, args);
}
}
4. 目录结构
5. 测试访问
-
结果