apache / apache/apisix-java-plugin-runner

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

Đang mở
#307 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
152
Fork
102
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

### 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

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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.