1.概要
Springcloud的出现确实给我们带来了很大的方便,但众多的接口怎么提供给前端呢,一个一个给???,这显示不是很合理,所以就出现了zuul
作用:提供统一的对外入口,识别权限,动态路由。
2.创建一个新模块zuul
如对项目结构不清楚的可以参考我的博客:https://blog.csdn.net/qq_43222167/article/details/105577097
3.配置
yml文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
<!-- zuul网关 -->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zuul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<version>1.3.6.RELEASE</version>
</dependency>
</dependencies>
启动类
package com.jbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableZuulProxy
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class,args);
}
}
yml文件,因为这里有多种配置方式,所以我把通用的先放一部分,然后就是每一种配置的说明与使用
公用:
server:
port: 8079
spring:
application:
name: cloud-zuul
eureka:
client:
service-url:
defaultZone: http://root:root@localhost:7776/eureka/
zuul:
routes:
注意都是放在routes的下一级
第一种:
customer: /orders/** #第一种配置方式:zuul.routes.消费者yml文件里面注册的名称.访问路径(访问路径自定义)
像我的消费里面的Controller类上面的@RequestMapping的值为order,所以我的访问路径为:http://localhost:8079/orders/order/方法上的@RequestMapping值
结果如图:
第二种:
#第二种(通过service-id)
kk: #这个值随便设置
path: /orders/** #这个值与第一种的/orders/**讲解是一样的
service-id: customer #通过名称访问(必须为消费者注册的名称(spring.application.name))
结果如图:
第三种:
kk: #这个值随便设置
path: /orders/** #这个值与第一种的/orders/**讲解是一样的
url: http://localhost:8080/ #通过url访问
结果如图:
注意http是必需要的
然后就是还有一个属性:
ignored-services: customer #某个微服务不走网关
这个属性与routes同级