Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az Azure SDK JavaScript-kódtárak fő HTTP-folyamata, amely a böngészőben és Node.jsműködik. Ez a kódtár elsősorban AutoRest és autorest.typescriptáltal létrehozott kódban használható.
Kezdetekhez
Követelmények
Jelenleg támogatott környezetek
- Node.js LTS-verziói
- A Safari, a Chrome, az Edge és a Firefox legújabb verziói.
További részletekért tekintse meg a támogatási szabályzat.
Telepítés
Ezt a csomagot elsősorban generált kódban használják, és nem közvetlenül a végfelhasználóknak szánták.
Főbb fogalmak
Pipeline kérés
A PipelineRequest a HTTP REST-végpontra irányuló kéréshez szükséges összes információt ismerteti.
PipelineResponse
A PipelineResponse a HTTP-kérést követően visszaadott REST-végpont http-válaszát (törzsét, fejléceit és állapotkódját) ismerteti.
Kérés küldése
A SendRequest metódus olyan metódus, amely egy PipelineRequest aszinkron módon visszaad egy PipelineResponse.
import { PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline";
type SendRequest = (request: PipelineRequest) => Promise<PipelineResponse>;
HttpClient
A HttpClient olyan objektum, amely megfelel a következő felületnek egy SendRequest metódus implementálásához:
import { SendRequest } from "@azure/core-rest-pipeline";
interface HttpClient {
/**
* The method that makes the request and returns a response.
*/
sendRequest: SendRequest;
}
HttpClientvárhatóan ténylegesen http-kérést küld egy kiszolgálóvégpontra, és ehhez valamilyen platformspecifikus mechanizmust használ.
Folyamatszabályzatok
A PipelinePolicy egy egyszerű objektum, amely a következő felületet valósítja meg:
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>;
}
A HttpClientalakban hasonló, de tartalmaz egy házirendnevet, valamint egy kissé módosított SendRequest aláírást, amely lehetővé teszi a folyamat következő szabályzatának feltételes meghívását.
A szabályzatok szerepét úgy tekinthetjük, mint a middleware, amely a NodeJS-fejlesztők számára ismerős fogalom, akik olyan keretrendszerekkel dolgoztak, mint az Express.
A sendRequest implementáció a kimenő kérést és a bejövő választ is átalakíthatja:
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;
},
};
A legtöbb szabályzat csak a kéréssel vagy a válaszsal foglalkozik, de van néhány kivétel, például a LogPolicy, amely mindegyikből naplózza az adatokat.
Csővezetékek
A Pipeline olyan objektum, amely PipelinePolicy objektumok készletét kezeli. Fő funkciója annak biztosítása, hogy a szabályzatok végrehajtása konzisztens és kiszámítható sorrendben történjen.
Gondolhat arra, hogy a szabályzatok veremként lesznek alkalmazva (első/utolsó előtti).) Az első PipelinePolicy bármely más szabályzat előtt módosíthatja a PipelineRequest, és ez az utolsó, amely módosítja a PipelineResponse, így az a legközelebbi a hívóhoz. A végső szabályzat az utolsó, amely módosíthatja a kimenő kérést, és az első, amely kezeli a választ, így az a legközelebbi a hálózathoz.
A Pipeline a következő felületnek felel meg:
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;
}
Mint látható, lehetővé teszi a szabályzatok hozzáadását vagy eltávolítását, és lazán összekapcsolja HttpClient a kiszolgálóvégpontra irányuló valós kérés végrehajtásához.
Az Pipelineegyik fontos fogalma, hogy a szabályzatokat rendezett fázisokba csoportosítják:
- Fázis szerializálása
- Nem fázisban lévő szabályzatok
- Fázis deszerializálása
- Újrapróbálkozási fázis
A fázisok a fenti sorrendben történnek, először szerializálási szabályzatokat alkalmazunk, majd újrapróbálkozási szabályzatokat alkalmazunk. A legtöbb egyéni szabályzat a második gyűjtőbe kerül, és nem kap fázisnevet.
Amikor szabályzatot ad hozzá a folyamathoz, nemcsak azt adhatja meg, hogy a szabályzat milyen fázisban van, hanem azt is, hogy van-e függősége:
import { PipelinePhase } from "@azure/core-rest-pipeline";
interface AddPipelineOptions {
beforePolicies?: string[];
afterPolicies?: string[];
afterPhase?: PipelinePhase;
phase?: PipelinePhase;
}
beforePolicies olyan szabályzatok, amelyeket az új szabályzatnak előbb végre kell hajtania, és afterPolicies olyan szabályzatok, amelyeket az új szabályzatnak utána kell végrehajtania. Hasonlóképpen, afterPhase azt jelenti, hogy a szabályzatnak csak a megadott fázis után kell végrehajtania.
Ez a szintaxis lehetővé teszi, hogy az egyéni szabályzatkészítők kifejezzék a saját szabályzataik és a @azure/core-rest-pipeline által biztosított beépített szabályzatok közötti szükséges kapcsolatokat a folyamat createPipelineFromOptionshasználatával történő létrehozásakor.
A implementátorok név vagy fázis alapján is el tudják távolítani a szabályzatokat abban az esetben, ha módosítani szeretnének egy meglévő Pipeline anélkül, hogy újat kellene létrehozniuk a createEmptyPipelinehasználatával. A clone módszer különösen akkor hasznos, ha egy Pipeline az eredeti módosítás nélkül újraépít.
Az összes többi korlátozás teljesülése után a szabályzatok a hozzáadásuk sorrendjében lesznek alkalmazva.
Példák
Példák a samples mappában találhatók.
Következő lépések
A teszteket helyileg hozhatja létre és futtathatja a npm run testvégrehajtásával. A test mappában megtekintheti a nyilvános osztályok speciális használatát és viselkedését.
Hibaelhárítás
Ha a kódtár használata során problémákba ütközik, nyugodtan a problémát.
Hozzájárulás
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót, amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
Azure SDK for JavaScript