package demo;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulServer;
import org.springframework.stereotype.Component;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
@SpringBootApplication
@EnableZuulServer
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class, args);
}
}
@Component
class SampleStaticResponseFilter extends ZuulFilter {
private static final String URI = "/static";
@Override
public String filterType() {
return "route";
}
@Override
public int filterOrder() {
return 0;
}
@Override
public boolean shouldFilter() {
String path = RequestContext.getCurrentContext().getRequest().getRequestURI();
if (checkPath(path))
return true;
if (checkPath("/" + path))
return true;
return false;
}
private boolean checkPath(String path) {
return URI.equals(path);
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
// Set the default response code for static filters to be 200
ctx.setResponseStatusCode(HttpServletResponse.SC_OK);
// first StaticResponseFilter instance to match wins, others do not set body
// and/or status
if (ctx.getResponseBody() == null) {
ctx.setResponseBody("Hello World");
ctx.setSendZuulResponse(false);
}
return null;
}
}