Klientská knihovna AZURE Core HTTP pro JavaScript – verze 1.0.0-beta.1

(Experimentální)

Toto je základní kanál HTTP pro javascriptové knihovny sady Azure SDK, které fungují v prohlížeči a Node.js. Tato knihovna je primárně určena pro použití v kódu generovaném pomocí funkcí AutoRest a autorest.typescript.

Začínáme

Požadavky

Instalace

Tento balíček se primárně používá ve vygenerovaném kódu a není určen k přímému využití koncovými uživateli.

Klíčové koncepty

PipelineRequest

A PipelineRequest popisuje všechny informace potřebné k provedení požadavku na koncový bod HTTP REST.

PipelineResponse

A PipelineResponse popisuje odpověď HTTP (tělo, hlavičky a stavový kód) z koncového bodu REST, která byla vrácena po provedení požadavku HTTP.

SendRequest

Metoda SendRequest je metoda, která může asynchronně PipelineRequest vracet PipelineResponse.

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

HttpsClient

An HttpsClient je libovolný objekt, který splňuje následující rozhraní pro implementaci SendRequest metody:

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

HttpsClientOčekává se, že ve skutečnosti provede požadavek HTTP na koncový bod serveru pomocí některého mechanismu specifického pro platformu.

Zásady kanálu

A PipelinePolicy je jednoduchý objekt, který implementuje následující rozhraní:

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

Má podobný tvar HttpsClientjako , ale obsahuje název zásady i mírně upravený SendRequest podpis, který umožňuje podmíněně volat další zásadu v kanálu.

Roli zásad middlewarelze považovat za koncept , který znají vývojáři NodeJS, kteří pracovali s architekturami, jako je Express.

Implementace sendRequest může transformovat odchozí požadavek i příchozí odpověď:

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

Většina zásad se týká pouze požadavku nebo odpovědi, ale existují některé výjimky, jako je logPolicy , které protokolují informace z každé z nich.

Pipelines

A Pipeline je objekt, který spravuje sadu PipelinePolicy objektů. Jeho hlavní funkcí je zajistit, aby se zásady spouštěly v konzistentním a předvídatelném pořadí.

Zásady, které se používají, si můžete představit jako zásobník (první/poslední).) První PipelinePolicy je schopen upravit PipelineRequest před jakoukoli jinou zásadu a je také poslední, která upraví PipelineResponse, takže je nejblíže volajícímu. Poslední zásada je poslední, která může upravit odchozí požadavek, a první, která zpracuje odpověď, takže je nejblíže k síti.

A Pipeline splňuje následující rozhraní:

export interface Pipeline {
  addPolicy(policy: PipelinePolicy, options?: AddPolicyOptions): void;
  removePolicy(options: { name?: string; phase?: PipelinePhase }): PipelinePolicy[];
  sendRequest(httpsClient: HttpsClient, request: PipelineRequest): Promise<PipelineResponse>;
  getOrderedPolicies(): PipelinePolicy[];
  clone(): Pipeline;
}

Jak vidíte, umožňuje přidávat nebo odebírat zásady a je volně spojená s provedením HttpsClient skutečného požadavku na koncový bod serveru.

Jedním z důležitých konceptů pro Pipelines je seskupování zásad do uspořádaných fází:

  1. Fáze serializace
  2. Zásady, které nejsou ve fázi
  3. Fáze deserializace
  4. Fáze opakování

Fáze probíhají ve výše uvedeném pořadí, přičemž zásady serializace se použijí jako první a zásady opakování se použijí jako poslední. Většina vlastních zásad spadá do druhého kbelíku a nemá název fáze.

Při přidávání zásad do kanálu můžete určit nejen to, v jaké fázi se zásada nachází, ale také jestli má nějaké závislosti:

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

beforePolicies jsou zásady, které musí nová zásada provést před, a afterPolicies jsou to zásady, po které musí nová zásada nastat. Podobně znamená, afterPhase že zásady se musí spustit až po uplynutí zadané fáze.

Tato syntaxe umožňuje autorům vlastních zásad vyjádřit všechny nezbytné vztahy mezi vlastními zásadami a předdefinované zásady poskytované @azure/core-https při vytváření kanálu pomocí createPipelineFromOptions.

Implementátoři také můžou odebrat zásady podle názvu nebo fáze v případě, že chtějí upravit existující Pipeline bez nutnosti vytvářet nové pomocí createEmptyPipeline. Metoda clone je obzvláště užitečná při opětovném vytvoření objektu Pipeline bez změny původního objektu.

Po splnění všech ostatních omezení se zásady použijí v pořadí, ve kterém byly přidány.

Příklady

Příklady najdete ve samples složce.

Další kroky

Testy můžete sestavit a spustit místně spuštěním rushx testpříkazu . Prozkoumejte složku a test podívejte se na pokročilé využití a chování veřejných tříd.

Řešení potíží

Pokud při používání této knihovny narazíte na problémy, můžete problém napište.

Přispívání

Pokud chcete přispívat do této knihovny, přečtěte si prosím průvodce přispívání , kde se dozvíte více o tom, jak sestavit a otestovat kód.

Imprese