apache / apache/apisix-java-plugin-runner

request help: 插件获取ext-plugin-post-resp获取请求响应码为0

未关闭
#307 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
152
派生
102
PR 合并指标
30 天内没有已合并 PR

描述

### Issue description
只配置了自定义插件apisix-java-plugin-runner,使用request.getVars("status")获取到的响应码为0,期望获取的是200,应该怎么获取正确的响应码?

### Environment
APISIX version:3.2
apisix-java-plugin-runner version:0.4.0

### plugin config
"plugins": {
"ext-plugin-post-resp": {
"allow_degradation": true,
"conf": [{
"name": "ReceiveResponseFilter",
"value": "{\"appId\":\"1000\",\"validate_header\":\"cookie\",\"rejected_code\":\"403\"}"
}]
}
}

### 插件代码
@Slf4j
@Component
public class ReceiveResponseFilter implements PluginFilter {

@Override
public String name() {
return "ReceiveResponseFilter";
}

/**
* @param request
* @param response
* @param chain
*/
@Override
public void postFilter(PostRequest request, PostResponse response, PluginFilterChain chain) {
String configStr = request.getConfig(this);
Gson gson = new Gson();
Map conf = new HashMap<>();
conf = gson.fromJson(configStr, conf.getClass());

try {
String appId = String.valueOf(conf.get("appId"));
log.info("ReceiveResponseFilter appId {}", appId);

byte[] bodyBytes = request.getBody().getBytes(StandardCharsets.ISO_8859_1);
String responseBody = new String(bodyBytes, StandardCharsets.UTF_8);
log.info("responseBody----- {}", responseBody);

String requestVarsHost = request.getVars("host");
String uri = request.getVars("uri");
String request_method = request.getVars("request_method");
String remote_addr = request.getVars("remote_addr");
String http_cookie = request.getVars("http_cookie");
String status = request.getVars("status");
log.info("requestVars host {}", requestVarsHost);
log.info("requestVars uri {}", uri);
log.info("requestVars request_method {}", request_method);
log.info("requestVars remote_addr {}", remote_addr);
log.info("requestVars http_cookie {}", http_cookie);
log.info("requestVars status {}", status);

Integer upstreamStatusCode = request.getUpstreamStatusCode();
log.info("upstreamStatusCode {}", upstreamStatusCode);

} catch (Exception e) {
log.info("ReceiveResponseFilter error {}", ExceptionUtil.stacktraceToString(e));
}
chain.postFilter(request, response);
}

@Override
public List requiredVars() {
List requiredVars = new ArrayList<>();
requiredVars.add("host");
requiredVars.add("uri");
requiredVars.add("request_method");
requiredVars.add("remote_addr");
requiredVars.add("http_cookie");
requiredVars.add("status");

return requiredVars;
}

@Override
public Boolean requiredRespBody() {
return true;
}
}

### 正常请求结果
requestVars status 0
upstreamStatusCode 13

### 失败请求结果
requestVars status 0
upstreamStatusCode 13

### 预期结果
正常获取请求返回的成功/失败响应码

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。