Azure Core HTTP-clientbibliotheek voor JavaScript - versie 1.19.0
Dit is de belangrijkste HTTP-pijplijn voor Azure SDK JavaScript-bibliotheken die werken in de browser en Node.js. Deze bibliotheek is voornamelijk bedoeld om te worden gebruikt in code die wordt gegenereerd door AutoRest- en autorest.typescript
.
Slag
Eisen
Momenteel ondersteunde omgevingen
- LTS-versies van Node.js
- Nieuwste versies van Safari, Chrome, Edge en Firefox.
Zie ons ondersteuningsbeleid voor meer informatie.
Installatie
Dit pakket wordt voornamelijk gebruikt in gegenereerde code en is niet bedoeld om rechtstreeks door eindgebruikers te worden gebruikt.
Sleutelbegrippen
PipelineRequest
Een PipelineRequest
beschrijft alle informatie die nodig is om een aanvraag naar een HTTP REST-eindpunt te verzenden.
PipelineResponse
Een PipelineResponse
beschrijft het HTTP-antwoord (hoofdtekst, headers en statuscode) van een REST-eindpunt dat is geretourneerd na het maken van een HTTP-aanvraag.
SendRequest
Een SendRequest
methode is een methode die een gegeven PipelineRequest
asynchroon een PipelineResponse
kan retourneren.
import { PipelineRequest, PipelineResponse } from "@azure/core-rest-pipeline";
type SendRequest = (request: PipelineRequest) => Promise<PipelineResponse>;
HttpClient
Een HttpClient
is een object dat voldoet aan de volgende interface om een SendRequest
methode te implementeren:
import { SendRequest } from "@azure/core-rest-pipeline";
interface HttpClient {
/**
* The method that makes the request and returns a response.
*/
sendRequest: SendRequest;
}
HttpClient
s worden verwacht de HTTP-aanvraag daadwerkelijk naar een servereindpunt te verzenden, met behulp van een platformspecifiek mechanisme om dit te doen.
Pijplijnbeleid
Een PipelinePolicy
is een eenvoudig object dat de volgende interface implementeert:
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>;
}
Het is vergelijkbaar met HttpClient
, maar bevat een beleidsnaam en een enigszins gewijzigde SendRequest
handtekening waarmee het volgende beleid in de pijplijn voorwaardelijk kan worden aangeroepen.
U kunt de rol van beleid bekijken als die van middleware
, een concept dat bekend is met NodeJS-ontwikkelaars die met frameworks hebben gewerkt, zoals Express.
De sendRequest
-implementatie kan zowel de uitgaande aanvraag als het binnenkomende antwoord transformeren:
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;
},
};
De meeste beleidsregels maken zich alleen zorgen over de aanvraag of het antwoord, maar er zijn enkele uitzonderingen, zoals de LogPolicy- die informatie van elk beleid registreert.
Pijpleidingen
Een Pipeline
is een object dat een set PipelinePolicy
objecten beheert. De belangrijkste functie is ervoor te zorgen dat beleidsregels in een consistente en voorspelbare volgorde worden uitgevoerd.
U kunt beleidsregels zien die worden toegepast als een stack (first-in/last-out.) De eerste PipelinePolicy
kan de PipelineRequest
wijzigen vóór andere beleidsregels en het is ook de laatste om de PipelineResponse
te wijzigen, waardoor deze het dichtst bij de beller ligt. Het laatste beleid is de laatste mogelijkheid om de uitgaande aanvraag te wijzigen en de eerste om het antwoord af te handelen, waardoor deze het dichtst bij het netwerk ligt.
Een Pipeline
voldoet aan de volgende interface:
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;
}
Zoals u kunt zien, kunnen beleidsregels worden toegevoegd of verwijderd en wordt het losjes gekoppeld aan HttpClient
om de echte aanvraag naar het servereindpunt uit te voeren.
Een belangrijk concept voor Pipeline
s is dat ze beleidsregels groeperen in geordende fasen:
- Fase serialiseren
- Beleid niet in een fase
- Fase deserialiseren
- Fase opnieuw proberen
Fasen vinden plaats in de bovenstaande volgorde, waarbij eerst serialisatiebeleid wordt toegepast en beleidsregels voor opnieuw proberen als laatste worden toegepast. De meeste aangepaste beleidsregels vallen in de tweede bucket en krijgen geen fasenaam.
Wanneer u een beleid toevoegt aan de pijplijn, kunt u niet alleen opgeven in welke fase een beleid zich bevindt, maar ook als er afhankelijkheden zijn:
import { PipelinePhase } from "@azure/core-rest-pipeline";
interface AddPipelineOptions {
beforePolicies?: string[];
afterPolicies?: string[];
afterPhase?: PipelinePhase;
phase?: PipelinePhase;
}
beforePolicies
beleidsregels zijn die door het nieuwe beleid moeten worden uitgevoerd voordat en afterPolicies
beleidsregels zijn die na het nieuwe beleid moeten plaatsvinden. Op dezelfde manier betekent afterPhase
dat het beleid alleen moet worden uitgevoerd nadat de opgegeven fase is opgetreden.
Met deze syntaxis kunnen aangepaste beleidsauteurs alle benodigde relaties uitdrukken tussen hun eigen beleid en de ingebouwde beleidsregels die worden geleverd door @azure/core-rest-pipeline
bij het maken van een pijplijn met behulp van createPipelineFromOptions
.
Implementeerfuncties kunnen ook beleidsregels op naam of fase verwijderen, in het geval dat ze een bestaande Pipeline
willen wijzigen zonder dat ze een nieuw beleid hoeven te maken met behulp van createEmptyPipeline
. De methode clone
is met name handig bij het opnieuw maken van een Pipeline
zonder het origineel te wijzigen.
Nadat aan alle andere beperkingen is voldaan, worden beleidsregels toegepast in de volgorde waarin ze zijn toegevoegd.
Voorbeelden
Voorbeelden vindt u in de map samples
.
Volgende stappen
U kunt de tests lokaal bouwen en uitvoeren door rushx test
uit te voeren. Verken de map test
om geavanceerd gebruik en gedrag van de openbare klassen te bekijken.
Probleemoplossing
Als u problemen ondervindt tijdens het gebruik van deze bibliotheek, kunt u gerust een probleem indienen.
Bijdragen
Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de gids voor bijdragen voor meer informatie over het bouwen en testen van de code.
Azure SDK for JavaScript