49장. Cryostat-RS 2.0 클라이언트 API


초록

Cryostat-RS 2.0은 REST 호출 또는 HTTP 클라이언트 호출을 수행하는 데 사용할 수 있는 완전한 기능을 갖춘 클라이언트 API를 정의합니다. 여기에는 유창한 API(요청 빌드를 단순화하기 위한), 메시지 구문 분석 프레임워크(유사 공급자라고 하는 플러그인 유형) 및 클라이언트 측의 비동기 호출 지원이 포함됩니다.

49.1. Introduction to the Cryostat-RS 2.0 Client API

49.1.1. 개요

Cryostat-RS 2.0은 HTTP 요청을 단계별로 빌드한 다음 적절한 HTTP 동사(GET, POST, PUT 또는 DELETE)를 사용하여 요청을 호출할 수 있는 fluent API를 정의합니다.

참고

블루프린트 XML 또는 Spring XML( jaxrs:client 요소 사용)에서 Cryostat-RS 클라이언트를 정의할 수도 있습니다. 이 방법에 대한 자세한 내용은 18.2절. “Cryostat-RS 클라이언트 끝점 구성” 을 참조하십시오.

49.1.2. 종속 항목

애플리케이션에서 Cryostat-RS 2.0 클라이언트 API를 사용하려면 프로젝트의 pom.xml 파일에 다음 Maven 종속성을 추가해야 합니다.

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-rt-rs-client</artifactId>
  <version>3.3.6.fuse-7_13_0-00015-redhat-00001</version>
</dependency>

비동기 호출 기능을 사용하려면 49.6절. “클라이언트에서 비동기 처리”참조) 다음 Maven 종속성도 필요합니다.

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-rt-transports-http-hc</artifactId>
  <version>3.3.6.fuse-7_13_0-00015-redhat-00001</version>
</dependency>

49.1.3. 클라이언트 API 패키지

Cryostat-RS 2.0 클라이언트 인터페이스 및 클래스는 다음 Java 패키지에 있습니다.

javax.ws.rs.client

Cryostat-RS 2.0 Java 클라이언트를 개발할 때 일반적으로 코어 패키지에서 클래스에 액세스해야 합니다.

javax.ws.rs.core

49.1.4. 간단한 클라이언트 요청의 예

다음 코드 조각은 Cryostat-RS 2.0 클라이언트 API를 사용하여 GET HTTP 메서드로 호출하는 http://example.org/bookstore Cryostat-RS 서비스를 호출하는 데 사용되는 간단한 예제를 보여줍니다.

// Java
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Client;
import javax.ws.rs.core.Response;
...
Client client = ClientBuilder.newClient();
Response res = client.target("http://example.org/bookstore/books/123")
    .request("application/xml").get();

49.1.5. Fluent API

Cryostat-RS 2.0 클라이언트 API는 유창한 API (때로 도메인별 언어라고도 함)로 설계되었습니다. fluent API에서는 Java 메서드가 간단한 언어의 명령처럼 보이는 방식으로 단일 문으로 Java 메서드 체인이 호출됩니다. Cryostat-RS 2.0에서 fluent API는 REST 요청을 빌드하고 호출하는 데 사용됩니다.

49.1.6. REST 호출을 수행하는 단계

Cryostat-RS 2.0 클라이언트 API를 사용하면 다음과 같이 클라이언트 호출이 빌드되고 일련의 단계로 호출됩니다.

  1. 클라이언트를 부트스트랩합니다.
  2. 대상을 구성합니다.
  3. 빌드 및 호출을 수행합니다.
  4. 응답을 구문 분석합니다.

49.1.7. 클라이언트 부트스트랩

첫 번째 단계는 javax.ws.rs.client.Client 오브젝트를 생성하여 클라이언트를 부트스트랩하는 것입니다. 이 Client 인스턴스는 비교적 중량한 오브젝트로, Cryostat-RS 클라이언트(비셉터 및 추가 CXF 기능 포함)를 지원하는 데 필요한 기술 스택을 나타냅니다. 이상적으로는 새 개체를 생성하는 대신 가능한 경우 클라이언트 개체를 다시 사용해야 합니다.

Client 개체를 생성하려면 다음과 같이 ClientBuilder 클래스에서 정적 메서드를 호출합니다.

// Java
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Client;
...
Client client = ClientBuilder.newClient();
...

49.1.8. 대상 구성

대상을 구성하면 REST 호출에 사용할 URI를 효과적으로 정의합니다. 다음 예제에서는 path(String) 메서드를 사용하여 기본 URI를 정의한 다음 기본 URI에 경로 세그먼트를 추가하는 방법을 보여줍니다.

// Java
import javax.ws.rs.client.WebTarget;
...
WebTarget base = client.target("http://example.org/bookstore/");
WebTarget books = base.path("books").path("{id}");
...

49.1.9. 빌드 및 호출 만들기Build and make the invocation

이는 실제로 두 단계로 구성되어 있습니다. 먼저 HTTP 요청( 헤더 포함, 허용 미디어 유형 등 포함)을 빌드합니다. 두 번째는 관련 HTTP 메서드를 호출합니다(필요한 경우 요청 메시지 본문을 선택적으로 제공).

예를 들어 application/xml 미디어 유형을 수락하는 요청을 생성하고 호출하려면 다음을 수행합니다.

// Java
import javax.ws.rs.core.Response;
...
Response resp = books.resolveTemplate("id", "123").request("application/xml").get();

49.1.10. 응답 구문 분석

마지막으로 이전 단계에서 얻은 resp ose,spose를 구문 분석해야 합니다. 일반적으로 응답은 다른 HTTP 메타데이터 및 HTTP 메시지 본문(있는 경우)과 함께 HTTP 헤더를 캡슐화하는 javax.ws.rs.core.Response 오브젝트 형식으로 반환됩니다.

반환된 HTTP 메시지에 문자열 형식으로 액세스하려는 경우 다음과 같이 readEntity 메서드를 호출하여 쉽게 수행할 수 있습니다 .

// Java
...
String msg = resp.readEntity(String.class);

readEntity 에 대한 인수로 String.class 를 지정하여 응답의 메시지 본문에 항상 액세스할 수 있습니다. 메시지 본문의 일반적인 변환 또는 변환의 경우 엔터티 공급자 를 제공하여 변환을 수행할 수 있습니다. 자세한 내용은 49.4절. “요청 및 응답 구문 분석” 에서 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.