将 header 添加到所有请求
Add header to all requests
有什么方法可以为所有请求添加 header 吗?
我必须为所有请求添加一个 header。在生产环境中,header 由代理添加。
在所有测试中手动添加此 header 很烦人。
您的请求是否使用 FeignClient?
如果你是,并且你的测试定义了一个名为 test
的配置文件,你可以使用这样的东西:
@Configuration
public class FeignRequestConfiguration {
@Bean
@Profile("test")
public RequestInterceptor feignRequestInterceptorTest() {
return (RequestTemplate requestTemplate) -> {
requestTemplate.header("Some-Header", "Some-Value");
};
}
}
正如@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);
所以有一种方法可以在某些测试中覆盖 header
使用下面的代码。使用 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();
有什么方法可以为所有请求添加 header 吗?
我必须为所有请求添加一个 header。在生产环境中,header 由代理添加。
在所有测试中手动添加此 header 很烦人。
您的请求是否使用 FeignClient?
如果你是,并且你的测试定义了一个名为 test
的配置文件,你可以使用这样的东西:
@Configuration
public class FeignRequestConfiguration {
@Bean
@Profile("test")
public RequestInterceptor feignRequestInterceptorTest() {
return (RequestTemplate requestTemplate) -> {
requestTemplate.header("Some-Header", "Some-Value");
};
}
}
正如@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);
所以有一种方法可以在某些测试中覆盖 header
使用下面的代码。使用 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();