簡體   English   中英

將 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM