我使用 RestAssured 过滤器来获取请求和响应日志。以下方法可以做到这一点:
public RequestSpecification setUpRequestSpec() {
return given()
.header("Content-Type", "application/json")
.header("PTToken", ProjectData.practiTestConfigs.ptToken())
.filters(new RequestLoggingFilter(), new ResponseLoggingFilter());
}
当请求发送时,会显示所有请求和响应日志,但问题是在请求正文中有一个字段,其中我发送了 Base64 格式的图片,它看起来有数千个字符。如何仅从请求日志中排除带有 Base64 图片的该字段?
据我所知,我必须为此目的编写一个自定义过滤器......也许有人可以举个例子。
解决方案1:使用
RequestLoggingFilter
来记录具体请求中的哪一部分。 详情
import static io.restassured.filter.log.LogDetail.*;
...
.filters(
RequestLoggingFilter.with(URI, METHOD, HEADERS, PARAMS),
new ResponseLoggingFilter()
);
解决方案2:编写自定义RequestLoggingFilter,例如记录URI
import io.restassured.filter.Filter;
import io.restassured.filter.FilterContext;
import io.restassured.response.Response;
import io.restassured.specification.FilterableRequestSpecification;
import io.restassured.specification.FilterableResponseSpecification;
import java.io.PrintStream;
public class CustomRequestLoggingFilter implements Filter {
private final PrintStream stream;
public CustomRequestLoggingFilter(PrintStream stream) {
this.stream = stream;
}
public CustomRequestLoggingFilter() {
this.stream = System.out;
}
@Override
public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) {
String uri = requestSpec.getURI();
stream.println("uri: " + uri);
return ctx.next(requestSpec, responseSpec);
}
}
要在客户端代码中使用它:
.filters(new CustomRequestLoggingFilter(), new ResponseLoggingFilter());