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.typescript
a által létrehozott kódban használható.
Első lépések
Követelmények
Jelenleg támogatott környezetek
- A Node.jsLTS-verziói
- A Safari, a Chrome, az Edge és a Firefox legújabb verziói.
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;
}
HttpClient
Az 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 middleware
szerepé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 PipelineResponse
hí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 Pipeline
fontos fogalma, hogy a szabályzatokat rendezett fázisokba csoportosítják:
- Fázis szerializálása
- Nem fázisban lévő szabályzatok
- Deszerializálási fázis
- Ú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 createPipelineFromOptions
lé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.
Azure SDK for JavaScript