是否可以将标头添加到所有请求?
我必须向所有请求添加标头。在生产环境中,标头是通过代理添加的。
在所有测试中手动添加此标头很烦人。
答案 0 :(得分:0)
您是否使用FeignClient进行请求?
如果确实如此,并且如果您的测试定义了名为test
的配置文件,则可以使用以下内容:
@Configuration
public class FeignRequestConfiguration {
@Bean
@Profile("test")
public RequestInterceptor feignRequestInterceptorTest() {
return (RequestTemplate requestTemplate) -> {
requestTemplate.header("Some-Header", "Some-Value");
};
}
}
答案 1 :(得分:0)
按照@pvpkiran的建议,我创建了过滤器
public class AddHeadersFilter implements Filter {
@Override
public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) {
requestSpec.header(new Header(IntegrationBaseTest.HEADER_USER_NAME, "test-user"));
return ctx.next(requestSpec, responseSpec);
}
}
然后我已将其添加到所有测试中
@BeforeClass
public static void configureRestAssured() {
RestAssured.filters(new AddHeadersFilter());
}
似乎可以正常工作。
我还添加了(希望)有用的配置
HeaderConfig headerConfig = headerConfig()
.overwriteHeadersWithName(HEADER_USER_NAME);
RestAssured.config().headerConfig(headerConfig);
因此在某些测试中有一种方法可以覆盖标头
答案 2 :(得分:0)
使用以下代码。使用RequestSpecBuilder可以实现这一目标。
RequestSpecBuilder reqbuild=new RequestSpecBuilder();
//Adding values like path parameters
reqbuild.addPathParam("customers", "12212");
reqbuild.addHeader("Content-Type", "application/json");
requestSpecfication=reqbuild.build();
given().spec(requestSpecfication).when().get("{customers}/").then().spec(responseSpecification).log().all();