JavaScript용 Azure Core HTTP 클라이언트 라이브러리 - 버전 1.18.2
브라우저에서 작동하고 Node.jsAzure SDK JavaScript 라이브러리의 핵심 HTTP 파이프라인입니다. 이 라이브러리는 주로 AutoRest 및 autorest.typescript
의해 생성된 코드에서 사용됩니다.
시작
요구 사항
현재 지원되는 환경
- LTS 버전의 Node.js
- Safari, Chrome, Edge 및 Firefox의 최신 버전입니다.
자세한 내용은 지원 정책 참조하세요.
설치
이 패키지는 주로 생성된 코드에서 사용되며 최종 사용자가 직접 사용하지 않습니다.
주요 개념
PipelineRequest
PipelineRequest
HTTP REST 엔드포인트에 요청하는 데 필요한 모든 정보를 설명합니다.
PipelineResponse
PipelineResponse
HTTP 요청을 수행한 후 반환된 REST 엔드포인트의 HTTP 응답(본문, 헤더 및 상태 코드)을 설명합니다.
SendRequest
SendRequest
메서드는 PipelineRequest
PipelineResponse
비동기적으로 반환할 수 있는 메서드입니다.
import { PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline";
type SendRequest = (request: PipelineRequest) => Promise<PipelineResponse>;
HttpClient
HttpClient
SendRequest
메서드를 구현하기 위해 다음 인터페이스를 충족하는 개체입니다.
import { SendRequest } from "@azure/core-rest-pipeline";
interface HttpClient {
/**
* The method that makes the request and returns a response.
*/
sendRequest: SendRequest;
}
HttpClient
실제로 서버 엔드포인트에 대한 HTTP 요청을 수행할 것으로 예상되며, 이를 위해 플랫폼별 메커니즘을 사용합니다.
파이프라인 정책
PipelinePolicy
다음 인터페이스를 구현하는 간단한 개체입니다.
import { PipelineRequest, SendRequest, PipelineResponse } from "@azure/core-rest-pipeline";
interface PipelinePolicy {
/**
* The policy name. Must be a unique string in the pipeline.
*/
name: string;
/**
* The main method to implement that manipulates a request/response.
* @param request - The request being performed.
* @param next - The next policy in the pipeline. Must be called to continue the pipeline.
*/
sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse>;
}
HttpClient
모양과 비슷하지만 파이프라인에서 다음 정책을 조건부로 호출할 수 있는 약간 수정된 SendRequest
서명뿐만 아니라 정책 이름이 포함됩니다.
정책의 역할을 middleware
, 즉 Express같은 프레임워크로 작업한 NodeJS 개발자에게 친숙한 개념으로 볼 수 있습니다.
sendRequest
구현은 나가는 요청과 들어오는 응답을 모두 변환할 수 있습니다.
import { PipelineRequest, SendRequest, PipelineResponse } from "@azure/core-rest-pipeline";
const customPolicy = {
name: "My wonderful policy",
async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {
// Change the outgoing request by adding a new header
request.headers.set("X-Cool-Header", 42);
const result = await next(request);
if (result.status === 403) {
// Do something special if this policy sees Forbidden
}
return result;
},
};
대부분의 정책은 요청 또는 응답에만 해당하지만 각 정책의 정보를 기록하는 LogPolicy 같은 몇 가지 예외가 있습니다.
파이프라인
Pipeline
PipelinePolicy
개체 집합을 관리하는 개체입니다. 주요 기능은 정책이 일관되고 예측 가능한 순서로 실행되도록 하는 것입니다.
정책이 스택처럼 적용되고 있다고 생각할 수 있습니다(선입선출/마지막 실행). 첫 번째 PipelinePolicy
다른 정책 전에 PipelineRequest
수정할 수 있으며 PipelineResponse
마지막으로 수정하여 호출자에게 가장 가깝습니다. 최종 정책은 나가는 요청을 마지막으로 수정할 수 있는 정책이며, 가장 먼저 응답을 처리하여 네트워크에 가장 가깝습니다.
Pipeline
다음 인터페이스를 충족합니다.
import {
PipelinePolicy,
AddPipelineOptions,
PipelinePhase,
HttpClient,
PipelineRequest,
PipelineResponse,
} from "@azure/core-rest-pipeline";
interface Pipeline {
addPolicy(policy: PipelinePolicy, options?: AddPipelineOptions): void;
removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];
sendRequest(httpClient: HttpClient, request: PipelineRequest): Promise<PipelineResponse>;
getOrderedPolicies(): PipelinePolicy[];
clone(): Pipeline;
}
볼 수 있듯이 정책을 추가하거나 제거할 수 있으며 HttpClient
느슨하게 결합되어 서버 엔드포인트에 대한 실제 요청을 수행합니다.
Pipeline
중요한 개념 중 하나는 정책을 순서가 지정된 단계로 그룹화한다는 것입니다.
- 직렬화 단계
- 단계가 아닌 정책
- 역직렬화 단계
- 다시 시도 단계
위 순서대로 단계가 발생하며 직렬화 정책이 먼저 적용되고 재시도 정책이 마지막으로 적용됩니다. 대부분의 사용자 지정 정책은 두 번째 버킷에 속하며 단계 이름이 지정되지 않습니다.
파이프라인에 정책을 추가할 때 정책이 있는 단계뿐만 아니라 종속성이 있는 경우에도 지정할 수 있습니다.
import { PipelinePhase } from "@azure/core-rest-pipeline";
interface AddPipelineOptions {
beforePolicies?: string[];
afterPolicies?: string[];
afterPhase?: PipelinePhase;
phase?: PipelinePhase;
}
beforePolicies
새 정책이 이전에 실행되어야 하는 정책이며 afterPolicies
새 정책이 발생해야 하는 정책입니다. 마찬가지로 afterPhase
지정된 단계가 발생한 후에만 정책을 실행해야 한다는 것을 의미합니다.
이 구문을 사용하면 사용자 지정 정책 작성자가 고유한 정책과 @azure/core-rest-pipeline
사용하여 파이프라인을 만들 때 createPipelineFromOptions
제공하는 기본 제공 정책 간에 필요한 관계를 표현할 수 있습니다.
구현자는 Pipeline
사용하여 새 정책을 만들지 않고도 기존 createEmptyPipeline
수정하려는 경우 이름 또는 단계로 정책을 제거할 수도 있습니다.
clone
메서드는 원본을 수정하지 않고 Pipeline
다시 만들 때 특히 유용합니다.
다른 모든 제약 조건이 충족되면 정책이 추가된 순서대로 적용됩니다.
예제
예제는 samples
폴더에서 찾을 수 있습니다.
다음 단계
rushx test
실행하여 로컬에서 테스트를 빌드하고 실행할 수 있습니다.
test
폴더를 탐색하여 공용 클래스의 고급 사용 및 동작을 확인합니다.
문제 해결
이 라이브러리를 사용하는 동안 문제가 발생하는 경우문제를
기여
이 라이브러리에 기여하려면 기여 가이드 읽어 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.
Azure SDK for JavaScript