Megosztás a következőn keresztül:


Azure Core HTTP-ügyféloldali kódtár JavaScripthez – 1.22.2-es verzió

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:

  1. Fázis szerializálása
  2. Nem fázisban lévő szabályzatok
  3. Fázis deszerializálása
  4. Ú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.