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>
<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>
<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
javax.ws.rs.client
Cryostat-RS 2.0 Java 클라이언트를 개발할 때 일반적으로 코어 패키지에서 클래스에 액세스해야 합니다.
javax.ws.rs.core
javax.ws.rs.core
49.1.4. 간단한 클라이언트 요청의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 코드 조각은 Cryostat-RS 2.0 클라이언트 API를 사용하여 GET HTTP 메서드로 호출하는 http://example.org/bookstore
Cryostat-RS 서비스를 호출하는 데 사용되는 간단한 예제를 보여줍니다.
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를 사용하면 다음과 같이 클라이언트 호출이 빌드되고 일련의 단계로 호출됩니다.
- 클라이언트를 부트스트랩합니다.
- 대상을 구성합니다.
- 빌드 및 호출을 수행합니다.
- 응답을 구문 분석합니다.
49.1.7. 클라이언트 부트스트랩 링크 복사링크가 클립보드에 복사되었습니다!
첫 번째 단계는 javax.ws.rs.client.Client
오브젝트를 생성하여 클라이언트를 부트스트랩하는 것입니다. 이 Client
인스턴스는 비교적 중량한 오브젝트로, Cryostat-RS 클라이언트(비셉터 및 추가 CXF 기능 포함)를 지원하는 데 필요한 기술 스택을 나타냅니다. 이상적으로는 새 개체를 생성하는 대신 가능한 경우 클라이언트 개체를 다시 사용해야 합니다.
새 Client
개체를 생성하려면 다음과 같이 ClientBuilder
클래스에서 정적 메서드를 호출합니다.
49.1.8. 대상 구성 링크 복사링크가 클립보드에 복사되었습니다!
대상을 구성하면 REST 호출에 사용할 URI를 효과적으로 정의합니다. 다음 예제에서는 path(String)
메서드를 사용하여 기본
URI를 정의한 다음 기본 URI에 경로 세그먼트를 추가하는 방법을 보여줍니다.
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();
// 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);
// Java
...
String msg = resp.readEntity(String.class);
readEntity
에 대한 인수로
를 지정하여 응답의 메시지 본문에 항상 액세스할 수 있습니다. 메시지 본문의 일반적인 변환 또는 변환의 경우 엔터티 공급자 를 제공하여 변환을 수행할 수 있습니다. 자세한 내용은 49.4절. “요청 및 응답 구문 분석” 에서 참조하십시오.
String
.class