1>.zuul网关的作用
2>.zuul网关涉及的概念的区别。
3>.基本zuul网关的配置
1.pom.xml文件配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
2.启动类上添加注解
@EnableZuulProxy// zuul代理 @EnableDiscoveryClient // Eureka注册中心
3.application.yml配置
(路由配置-注入Eureka注册中心)
server:
port: 10010
spring:
application:
name: server-zuul
zuul:
routes:
service-provider: /user/** #service-provider是服务名,/user/是服务器提供得到接口地址
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka
4>.Zuul过滤器的配置
自定义网关过滤器
package alian.filter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.apache.http.protocol.RequestContent;
import org.apache.tomcat.util.buf.StringUtils;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
@Component
public class MyZuulFilter extends com.netflix.zuul.ZuulFilter {
/*
*
*l拦截器的种类
* pre
* routing
* post
* error
*
* */
@Override
public String filterType() {
return "pre";
}
/*
*
* 过滤器的优先级
*
* */
@Override
public int filterOrder() {
return 10;
}
/*
*
* 是否执行过滤器
*
*
* */
@Override
public boolean shouldFilter() {
return true;
}
/*
*
* 过滤拦击逻辑
*
* */
@Override
public Object run() throws ZuulException {
RequestContext currentContext = RequestContext.getCurrentContext();
/*
* 获取request
* */
HttpServletRequest request = currentContext.getRequest();
String auth = request.getParameter("auth");
if(auth==null)
{
currentContext.setSendZuulResponse(false);// 拦截不转发
currentContext.setResponseStatusCode(404);
currentContext.setResponseBody("request error");
}
else
return null;
return null;
// 返回值为null代表什么都不做
}
}