我正在尝试在 Zuul 预过滤器中向请求正文添加一个新字段。
我正在使用这里的 Neflix 的 Zuul 示例项目之一,我的过滤器的实现与UppercaseRequestEntityFilter此示例非常相似。
我能够应用诸如大写的转换,甚至完全修改请求,唯一不方便的是我无法修改长度超过正文请求原始长度的正文请求的内容。
这是我的过滤器的实现:
@Component
public class MyRequestEntityFilter extends ZuulFilter {
public String filterType() {
return "pre";
}
public int filterOrder() {
return 10;
}
public boolean shouldFilter() {
RequestContext context = getCurrentContext();
return true;
}
public Object run() {
try {
RequestContext context = getCurrentContext();
InputStream in = (InputStream) context.get("requestEntity");
if (in == null) {
in = context.getRequest().getInputStream();
}
String body = StreamUtils.copyToString(in, Charset.forName("UTF-8"));
body = body.replaceFirst("qqq", "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq");
// …Run Code Online (Sandbox Code Playgroud)