Klientská knihovna HTTP pro Azure Core pro JavaScript – verze 1.19.0
Toto je základní kanál HTTP pro javascriptové knihovny Azure SDK, které fungují v prohlížeči a Node.js. Tato knihovna je primárně určena k použití v kódu generovaném AutoRest a autorest.typescript
.
Začínáme
Požadavky
Aktuálně podporovaná prostředí
- LTS verze Node.js
- Nejnovější verze Safari, Chrome, Edge a Firefox.
Další podrobnosti najdete v našich zásadách podpory .
Instalace
Tento balíček se primárně používá ve vygenerovaném kódu a nemá být využíván přímo koncovými uživateli.
Klíčové koncepty
PipelineRequest
PipelineRequest
popisuje všechny informace potřebné k provedení požadavku na koncový bod HTTP REST.
PipelineResponse
PipelineResponse
popisuje odpověď HTTP (tělo, hlavičky a stavový kód) z koncového bodu REST, který se vrátil po provedení požadavku HTTP.
SendRequest
Metoda SendRequest
je metoda, která PipelineRequest
může asynchronně vrátit PipelineResponse
.
import { PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline";
type SendRequest = (request: PipelineRequest) => Promise<PipelineResponse>;
HttpClient
HttpClient
je jakýkoli objekt, který splňuje následující rozhraní pro implementaci SendRequest
metody:
import { SendRequest } from "@azure/core-rest-pipeline";
interface HttpClient {
/**
* The method that makes the request and returns a response.
*/
sendRequest: SendRequest;
}
očekává se, že HttpClient
skutečně provede požadavek HTTP na koncový bod serveru pomocí některého mechanismu specifického pro platformu.
Zásady kanálu
PipelinePolicy
je jednoduchý objekt, který implementuje následující rozhraní:
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>;
}
Podobá se HttpClient
, ale obsahuje název zásady a mírně upravený podpis SendRequest
, který umožňuje podmíněně volat další zásady v kanálu.
Můžete si prohlédnout roli zásad jako middleware
, koncept, který je známý pro vývojáře NodeJS, kteří pracovali s architekturami, jako je Express.
Implementace sendRequest
může transformovat odchozí požadavek i příchozí odpověď:
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;
},
};
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ého.
Potrubí
Pipeline
je objekt, který spravuje sadu PipelinePolicy
objektů. Její 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 (first-in/last-out).) První PipelinePolicy
je schopen upravit PipelineRequest
před všemi dalšími zásadami a je také poslední úpravou PipelineResponse
, takže je nejblíže volajícímu. Poslední zásadou je poslední možnost upravit odchozí požadavek a první, která bude zpracovávat odpověď, aby byla nejblíže k síti.
Pipeline
splňuje následující rozhraní:
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;
}
Jak vidíte, umožňuje přidat nebo odebrat zásady a je volně svázán s HttpClient
k provedení skutečného požadavku na koncový bod serveru.
Jedním z důležitých konceptů Pipeline
je, že zásady seskupují do uspořádaných fází:
- Fáze serializace
- Zásady, které nejsou ve fázi
- Fáze deserializace
- 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 opakujte použití zásad jako poslední. Většina vlastních zásad spadá do druhého kontejneru a nemá název fáze.
Při přidávání zásad do kanálu můžete určit nejen fázi, ve které se zásada nachází, ale také v případě, že má nějaké závislosti:
import { PipelinePhase } from "@azure/core-rest-pipeline";
interface AddPipelineOptions {
beforePolicies?: string[];
afterPolicies?: string[];
afterPhase?: PipelinePhase;
phase?: PipelinePhase;
}
beforePolicies
jsou zásady, které musí nová zásada spustit před a afterPolicies
jsou zásady, ke kterým musí dojít po nové zásadě. Podobně afterPhase
znamená, že zásady se musí spouštět až po dokončení 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-rest-pipeline
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
, aniž by museli vytvořit novou pomocí createEmptyPipeline
. Metoda clone
je zvláště užitečná při opětovném vytvoření Pipeline
beze změny originálu.
Po splnění všech ostatních omezení se zásady použijí v pořadí, v jakém byly přidány.
Příklady
Příklady najdete ve složce samples
.
Další kroky
Testy můžete sestavit a spustit místně spuštěním rushx test
. Prozkoumejte složku test
a podívejte se na pokročilé využití a chování veřejných tříd.
Řešení problémů
Pokud při používání této knihovny narazíte na problémy, neváhejte vytvořit problém.
Přispívající
Pokud chcete přispívat do této knihovny, přečtěte si průvodce přispívání a přečtěte si další informace o vytváření a testování kódu.
Azure SDK for JavaScript