最近做项目有一个需求:一个网盘系统,文件存放在分布式文件系统中,之前的文件下载统一走的文件下载服务,现在需要在单文件下载的时候不需要走文件下载服务,而是直接访问文件系统上的路径,响应的时候修改响应头,使之变为文件下载(减少文件下载服务的压力)。
分析:该需求有两点;①在网关中路由的时候修改路由地址②响应的时候修改响应头,使之变为文件下载。
直接看网关中的过滤器代码实现:
修改请求路径:
package com.example.demo;
import java.net.URI;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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;
import com.netflix.zuul.exception.ZuulException;
/**
* 需求:如果请求路径内包含list请求,则重新路由到指定的接口,路由结束后,修改响应头
*
* @author mxf
*
*/
@Component
publ