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


Azure Core HTTP-ügyfélkódtár JavaScripthez – 1.11.0-s verzió

Ez az Azure SDK JavaScript-kódtárak fő HTTP-folyamata, amely a böngészőben és a Node.js működik. Ez a kódtár elsősorban az AutoRest és autorest.typescripta által létrehozott kódban használható.

Első lépések

Követelmények

Jelenleg támogatott környezetek

További részletekért tekintse meg támogatási szabályzatunkat .

Telepítés

Ezt a csomagot elsősorban a létrehozott kódban használják, és nem közvetlenül a végfelhasználóknak szánták.

Fő fogalmak

PipelineRequest

Az A PipelineRequest a HTTP REST-végpontra irányuló kéréshez szükséges összes információt ismerteti.

PipelineResponse

Az A PipelineResponse egy REST-végpont http-válaszát (törzsét, fejléceit és állapotkódját) ismerteti, amelyet a HTTP-kérés végrehajtása után ad vissza.

SendRequest

A SendRequest metódus olyan metódus, amely adott aszinkron PipelineRequest módon ad vissza egy metódust PipelineResponse.

export type SendRequest = (request: PipelineRequest) => Promise<PipelineResponse>;

HttpClient

Egy HttpClient olyan objektum, amely megfelel a következő felületnek egy SendRequest metódus implementálásához:

export interface HttpClient {
  /**
   * The method that makes the request and returns a response.
   */
  sendRequest: SendRequest;
}

HttpClientAz s-ek várhatóan ténylegesen egy kiszolgálóvégpontra küldik a HTTP-kérést, ehhez valamilyen platformspecifikus mechanizmust használnak.

Folyamatszabályzatok

Az A PipelinePolicy egy egyszerű objektum, amely a következő felületet valósítja meg:

export 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>;
}

Alakja hasonló a következőhöz: HttpClient, de tartalmaz egy szabályzatnevet, valamint egy enyhén módosított SendRequest aláírást, amely lehetővé teszi, hogy feltételesen meghívja a következő szabályzatot a folyamatban.

A szabályzatok middlewareszerepét a következőhöz hasonlóan tekinthetjük meg, amely ismerős a NodeJS-fejlesztők számára, akik olyan keretrendszerekkel dolgoztak, mint az Express.

Az sendRequest implementáció a kimenő kérést és a bejövő választ is átalakíthatja:

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 (response.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.

Pipelines

Az A Pipeline egy objektum, amely egy objektumkészletet PipelinePolicy kezel. 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 egy veremként lesznek alkalmazva (első/utolsó előtti).) Az első PipelinePolicy képes módosítani a PipelineRequest korábbi szabályzatokat, és ez az utolsó, amely a PipelineResponsehívóhoz legközelebb áll. 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özelebb van a hálózathoz.

A Pipeline megfelel a következő felületnek:

export interface Pipeline {
  addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): 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 kapcsolódik HttpClient a kiszolgáló végpontjára irányuló valós kérés végrehajtásához.

Az s egyik Pipelinefontos 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. Deszerializálási fázis
  4. Újrapróbálkozási fázis

A fázisok a fenti sorrendben történnek, először a szerializálási szabályzatok lesznek alkalmazva, majd az újrapróbálkozási szabályzatok utolsóként lesznek alkalmazva. 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 egy szabályzat melyik fázisban van, hanem azt is, hogy van-e függősége:

export interface AddPolicyOptions {
  beforePolicies?: string[];
  afterPolicies?: string[];
  afterPhase?: PipelinePhase;
  phase?: PipelinePhase;
}

beforePolicies azok a szabályzatok, amelyeket az új szabályzatnak előbb végre kell hajtania, és afterPolicies azok a szabályzatok, amelyeket az új szabályzatnak utána kell végrehajtania. Hasonlóképpen, azt jelenti, afterPhase hogy a szabályzatnak csak a megadott fázis után kell végrehajtania.

Ez a szintaxis lehetővé teszi az egyéni szabályzatszerzők számára, hogy kifejezzék a saját szabályzataik és a folyamat használatával createPipelineFromOptionslétrehozott beépített szabályzatok @azure/core-rest-pipeline közötti szükséges kapcsolatokat.

A implementátorok név vagy fázis alapján is eltávolíthatják a szabályzatokat abban az esetben, ha módosítani szeretnének egy meglévőt Pipeline anélkül, hogy újat kellene létrehozniuk a használatával createEmptyPipeline. A clone metódus különösen akkor hasznos, ha az eredeti módosítás nélkül hoz létre újra egy Pipeline metódust.

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 mappában samples találhatók.

Következő lépések

A teszteket helyileg hozhatja létre és futtathatja a következő végrehajtásával rushx test: . A mappában megtekintheti a test nyilvános osztályok speciális használatát és viselkedését.

Hibaelhárítás

Ha problémákba ütközik a kódtár használata során, nyugodtan jelentse be a problémát.

Közreműködé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.

Megjelenések