SpringCloud Zuul

发布于:2025-08-18 ⋅ 阅读:(17) ⋅ 点赞:(0)

SpringCloud Zuul

package zwf;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

/**
 * <p>路由、拦截应用</p>
 * <p>从事信息技术行业,干着写代码的事,记录生活人生</p>
 * 
 * @author ZengWenFeng
 * @date 2021.09.13
 * @mobile 13805029595
 */
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class AppZuul
{
	//礼法、乐舞、射箭、御车、书法、数学(珠算)
	//道德品行、音乐舞蹈、骑马射箭、驾驭战车、写字书法、算数方法
	//中国古代已经把【礼】、【乐】放在首位了,这两项都是修理内心的
	//【射】、【御】体育锻炼、国防
	//【书】、【数】生活技能、以前的人写信、算术等谋生
	
	//先贤【千年总结】没有【过时】,民族自豪感以及自信感,只是被历史遗忘、被文人曲解、只是被细化为领域、在生存【书】、【数】下来的基础下才能【礼】、【乐】、【射】、【御】
	//人们难过悲伤的时候、愉快高兴的时候喜欢干嘛~ ~ ~music~ ~ ~
	//我们只是在尖端机械制造、科技由于近代的自闭暂时落后~ ~ ~

	//http://127.0.0.1:7101/ribbon/hello?name=ZengWenfeng&token=zwf005129
	//http://127.0.0.1:7102/hello?name=ZengWenfeng
	
	//http://127.0.0.1:7101/feign/hello?name=ZengWenfeng&token=zwf005129
	//http://127.0.0.1:7103/hello?name=ZengWenfeng
	
	//http://127.0.0.1:7104/hello?name=ZengWenfeng
	//http://127.0.0.1:7105/hello?name=ZengWenfeng
	
	//springboot 在2.4版本支持zuul 后面改了Gateway
	public static void main(String[] args)
	{
		SpringApplication.run(AppZuul.class, args);
	}
}

package zwf.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;

@Component
public class AccessFilter extends ZuulFilter
{

	private static Logger log = LoggerFactory.getLogger(AccessFilter.class);

	/*
	 * pre:路由之前
	 * routing:路由之时
	 * post: 路由之后
	 * error:发送错误调用
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public String filterType()
	{
		return FilterConstants.PRE_TYPE;
	}

	/*
	 * 过滤的顺序
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public int filterOrder()
	{
		return 0;
	}

	/*
	 * 逻辑判断,是否要过滤,永远过滤
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public boolean shouldFilter()
	{
		return true;
	}

	/*
	 * 过滤器的具体逻辑
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public Object run()
	{
		RequestContext ctx = RequestContext.getCurrentContext();
		HttpServletRequest request = ctx.getRequest();
		log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));

		Object accessToken = request.getParameter("token");
		if (accessToken == null)
		{
			log.warn("token is empty");
			ctx.setSendZuulResponse(false);
			ctx.setResponseStatusCode(401);
			try
			{
				ctx.getResponse().getWriter().write("token is empty");
			}
			catch (Exception e)
			{

			}

			return null;
		}

		log.info("ok");

		return null;
	}
}

package zwf.filter;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.stereotype.Component;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;

@Component
public class LoggerFilter extends ZuulFilter
{

	/*
	 * pre:路由之前
	 * routing:路由之时
	 * post: 路由之后
	 * error:发送错误调用
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public String filterType()
	{
		return FilterConstants.POST_TYPE;
	}

	/*
	 * 过滤的顺序
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public int filterOrder()
	{
		return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 1;
	}

	/*
	 * 逻辑判断,是否要过滤,永远过滤
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public boolean shouldFilter()
	{
		return true;
	}

	/*
	 * 过滤器的具体逻辑
	 * 
	 * @author ZengWenFeng
	 * @date 2025.08.12
	 * @email 117791303@qq.com
	 * @mobile 13805029595
	 */
	public Object run()
	{
		RequestContext context = RequestContext.getCurrentContext();
		HttpServletRequest request = context.getRequest();
		String method = request.getMethod();//氢气的类型,post get ..
		String host = request.getRemoteHost();
		Map<String, String[]> params = request.getParameterMap();
		String paramsStr = params.toString();//请求的参数
		
		long statrtTime = (long) context.get("startTime");//请求的开始时间
		Throwable throwable = context.getThrowable();//请求的异常,如果有的话
		String message = throwable.getMessage();
		request.getRequestURI();//请求的uri
		context.getResponseStatusCode();//请求的状态
		long duration = System.currentTimeMillis() - statrtTime;//请求耗时

		return null;
	}
}


网站公告

今日签到

点亮在社区的每一天
去签到