[英]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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.