Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
cb123456-user opened this issue Apr 12, 2024 · 0 comments

Comments

@cb123456-user
Copy link

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<String, Object> 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<String> requiredVars() {
    List<String> 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

预期结果

正常获取请求返回的成功/失败响应码

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant