61.5. 클라이언트 응답 필터


61.5.1. 개요

이 섹션에서는 클라이언트 측에서 들어오는 응답 메시지를 가로채는 데 사용되는 클라이언트 응답 필터 를 구현하고 등록하는 방법을 설명합니다. 클라이언트 응답 필터는 클라이언트 측의 모든 종류의 일반 응답 처리에 사용할 수 있습니다.

61.5.2. ClientResponseFilter 인터페이스

javax.ws.rs.client.ClientResponseFilter 인터페이스는 다음과 같이 정의됩니다.

Copy to Clipboard Toggle word wrap
// Java
package javax.ws.rs.client;
...
import java.io.IOException;

public interface ClientResponseFilter {
    void filter(ClientRequestContext requestContext, ClientResponseContext responseContext)
            throws IOException;
}

ClientResponseFilter 를 구현하면 클라이언트 측에서 ClientResponse 확장 포인트에 대한 필터를 생성하여 서버에서 수신한 후 응답 메시지를 필터링할 수 있습니다.

61.5.3. ClientResponseContext 인터페이스

ClientResponseFilter필터 방법은 javax.ws.rs.client.ClientRequestContext 유형의 인수와 javax.ws.rs.client.ClientResponseContext 형식의 인수와 발신 응답 메시지 및 관련 메타데이터에 액세스하는 데 사용할 수 있는 두 가지 인수를 수신합니다. “ClientRequestContext 인터페이스”

ClientResponseContext 인터페이스는 다음과 같이 정의됩니다.

Copy to Clipboard Toggle word wrap
// Java
...
package javax.ws.rs.client;

import java.io.InputStream;
import java.net.URI;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

import javax.ws.rs.core.EntityTag;
import javax.ws.rs.core.Link;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.NewCookie;
import javax.ws.rs.core.Response;

public interface ClientResponseContext {

    public int getStatus();

    public void setStatus(int code);

    public Response.StatusType getStatusInfo();

    public void setStatusInfo(Response.StatusType statusInfo);

    public MultivaluedMap<String, String> getHeaders();

    public String getHeaderString(String name);

    public Set<String> getAllowedMethods();

    public Date getDate();

    public Locale getLanguage();

    public int getLength();

    public MediaType getMediaType();

    public Map<String, NewCookie> getCookies();

    public EntityTag getEntityTag();

    public Date getLastModified();

    public URI getLocation();

    public Set<Link> getLinks();

    boolean hasLink(String relation);

    public Link getLink(String relation);

    public Link.Builder getLinkBuilder(String relation);

    public boolean hasEntity();

    public InputStream getEntityStream();

    public void setEntityStream(InputStream input);
}

61.5.4. 샘플 구현

ClientResponse 확장 포인트(즉, 서버에서 응답 메시지를 수신한 후 필터가 실행되는 클라이언트 응답 필터)를 구현하려면 ClientResponseFilter 인터페이스를 구현하는 클래스를 정의합니다.

예를 들어 다음 코드는 priority가 20인 ClientResponse 확장 지점에 설치된 간단한 클라이언트 응답 필터의 예를 보여줍니다.

Copy to Clipboard Toggle word wrap
// Java
package org.jboss.fuse.example;

import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientResponseContext;
import javax.ws.rs.client.ClientResponseFilter;
import javax.annotation.Priority;

@Priority(value = 20)
public class SampleClientResponseFilter implements ClientResponseFilter {

  public SampleClientResponseFilter() {
    System.out.println("SampleClientResponseFilter starting up");
  }

  @Override
  public void filter(
      ClientRequestContext requestContext,
      ClientResponseContext responseContext
  )
  {
    // Add an extra header on the response
    responseContext.getHeaders().putSingle("MyCustomHeader", "my custom data");
  }
}

61.5.5. 클라이언트 응답 필터 등록

JAX-RS 2.0 클라이언트 API를 사용하여 javax.ws.rs.client.Client 오브젝트 또는 javax.ws.client. WebTarget 오브젝트에 클라이언트 응답 필터를 직접 등록할 수 있습니다. 효과적으로는 클라이언트 요청 필터를 선택적으로 다른 범위에 적용할 수 있으므로 필터의 특정 URI 경로만 영향을 받습니다.

예를 들어 다음 코드는 SampleClientResponseFilter 필터를 등록하는 방법을 보여주므로 client 개체를 사용하여 수행된 모든 호출에 적용됩니다.

Copy to Clipboard Toggle word wrap
// Java
...
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
...
Client client = ClientBuilder.newClient();
client.register(new SampleClientResponseFilter());
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat, Inc.