SpringCloud Zull是一個基於NetflixZuul實現的API網關組件,它實現了請求路由,負載均衡,校驗過濾等功能;本文主要記錄springcloud zuul的入門級demo開發過程;
Zull相當於用戶和微服務之間的一個屏障,進行相關配置后它先於微服務接收用戶請求並過濾、校驗並進行轉發,這樣大大提高了微服務的安全性
跟之前提到的springcloud組件一樣,開發一個簡單的zull服務我們只需要關注以下幾點:
1、pom.xml
<!-- 導入zuul的依賴 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency>
2、application.properties
server.port=9999
#應用名稱
spring.application.name=zuulServer
# 是否需要將自己注冊到注冊中心中,默認值true
eureka.client.registerWithEureka=true
# 是否從注冊中心中獲取注冊信息,默認值true
eureka.client.fetchRegistry=true
# 客戶端和服務端進行交互的地址
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:7070/eureka/,http://127.0.0.1:7071/eureka/
#將自己的ip地址注冊到Eureka服務中
eureka.instance.prefer-ip-address=true
############ 進行zuul配置 ############
# 配置攔截的url,表示攔截sso開頭的所有請求並進行服務轉發
zuul.routes.loginserver.path=/sso/**
# 攔截到上面的path后制定分發個loginServer(之前開發的登錄服務名稱)
zuul.routes.loginserver.serviceId=loginServer
3、項目的啟動類
@EnableZuulProxy @SpringBootApplication public class ZuulApplication { public static void main(String[] args) { SpringApplication.run(ZuulApplication.class, args); } }
4、過濾器的編寫
/** * zuul的過濾器 */ @Component public class LoginZuulFilter extends ZuulFilter { @Override public String filterType() { return "pre"; } @Override public int filterOrder() { return 0; } @Override public boolean shouldFilter() { return false; } @Override public Object run() throws ZuulException { RequestContext context = RequestContext.getCurrentContext(); System.out.println("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆成功進入了過濾器☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"); return null; } }