2.5. Filters

편집일시: 2021-04-12 14:02 조회수: 147 댓글수: 0
다음의 예와 같이, 요청을 인터셉트하여 변경하기 위해 `WebClient.Builder`을 통해 클라이언트 필터 (`ExchangeFilterFunction`)을 등록 할 수 있다. Java ``` WebClient client = WebClient.builder() .filter((request, next) -> { ClientRequest filtered = ClientRequest.from(request) .header("foo", "bar") .build(); return next.exchange(filtered); }) .build(); ``` Kotlin ``` val client = WebClient.builder() .filter { request, next -> val filtered = ClientRequest.from(request) .header("foo", "bar") .build() next.exchange(filtered) } .build() ``` 이것은 인증 등의 횡단적 관심사( cross-cutting concerns)에 사용할 수 있다. 다음 예제에서는 정적 팩토리 방식을 통한 기본 인증 필터를 사용하고 있다. Java ``` import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication; WebClient client = WebClient.builder() .filter(basicAuthentication("user", "password")) .build(); ``` Kotlin ``` import org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication val client = WebClient.builder() .filter(basicAuthentication("user", "password")) .build() ``` 다른 인스턴스를 시작점으로 사용하여 새로운 `WebClient` 인스턴스를 만들 수 있다. 그러면 원본 `WebClient`에 영향을 주지 않고 필터를 삽입 또는 삭제할 수 있다. 다음은 인덱스 0에 기본 인증 필터를 삽입하는 예이다. Java ``` import static org.springframework.web.reactive.function.client.ExchangeFilterFunctions.basicAuthentication; WebClient client = webClient.mutate() .filters(filterList -> { filterList.add(0, basicAuthentication("user", "password")); }) .build(); ``` Kotlin ``` val client = webClient.mutate() .filters { it.add(0, basicAuthentication("user", "password")) } .build() ```

이전 글 : 2.4. Request Body
다음 글 : 2.6. Attributes