JavaScript için Azure Core HTTP istemci kitaplığı - sürüm 1.0.0-beta.1

(Deneysel)

Bu, tarayıcıda ve Node.js çalışan Azure SDK JavaScript kitaplıkları için temel HTTP işlem hattıdır. Bu kitaplık öncelikli olarak AutoRest ve autorest.typescripttarafından oluşturulan kodda kullanılmak üzere tasarlanmıştır.

Başlarken

Gereksinimler

Yükleme

Bu paket öncelikli olarak oluşturulan kodda kullanılır ve son kullanıcılar tarafından doğrudan kullanılması amaçlanmaz.

Önemli kavramlar

PipelineRequest

bir PipelineRequest HTTP REST uç noktasına istekte bulunmak için gereken tüm bilgileri açıklar.

PipelineResponse

bir PipelineResponse HTTP isteği yapıldıktan sonra döndürülen bir REST uç noktasından HTTP yanıtını (gövde, üst bilgiler ve durum kodu) açıklar.

SendRequest

SendRequest Yöntemi, verilen PipelineRequest zaman uyumsuz olarak bir döndürebilen bir PipelineResponseyöntemdir.

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

HttpsClient

bir HttpsClient yöntemi uygulamak için aşağıdaki arabirimi karşılayan herhangi bir SendRequest nesnedir:

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

HttpsClients'nin bunu yapmak için platforma özgü bir mekanizma kullanarak bir sunucu uç noktasına HTTP isteği göndermesi beklenir.

İşlem Hattı İlkeleri

A PipelinePolicy , aşağıdaki arabirimi uygulayan basit bir nesnedir:

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

şeklindekine benzer, ancak işlem hattında bir sonraki ilkeyi HttpsClientkoşullu olarak çağırmasını sağlayan bir ilke adı ve biraz değiştirilmiş SendRequest bir imza içerir.

İlkelerin rolünü, Express gibi çerçevelerle çalışmış NodeJS geliştiricilerine tanıdık gelen bir kavram olarak middlewaregörüntüleyebilir.

Uygulama sendRequest hem giden isteği hem de gelen yanıtı dönüştürebilir:

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

İlkelerin çoğu yalnızca istek veya yanıtla ilgilidir, ancak her birinden bilgileri günlüğe kaydeden LogPolicy gibi bazı özel durumlar vardır.

Pipelines

A Pipeline , bir nesne kümesini yöneten bir nesnedir PipelinePolicy . Ana işlevi, ilkelerin tutarlı ve öngörülebilir bir sırada yürütülmesini sağlamaktır.

İlkelerin bir yığın (ilk gelen/son çıkış) gibi uygulandığını düşünebilirsiniz. İlki PipelinePolicy , diğer ilkeler öncesinde öğesini değiştirebilir PipelineRequest ve aynı zamanda öğesini değiştiren PipelineResponseson ilkedir ve bunu çağırana en yakın hale getirir. Son ilke, giden isteği değiştirebilecek son ilkedir ve yanıtı ilk işleyen ilkedir ve bunu ağa en yakın hale getirir.

A Pipeline , aşağıdaki arabirimi karşılar:

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

Gördüğünüz gibi, ilkelerin eklenmesine veya kaldırılmasına olanak tanır ve sunucu uç noktasına gerçek isteği gerçekleştirmek için gevşek bir şekilde ile HttpsClient birleştirilir.

s için Pipelineönemli kavramlardan biri, ilkeleri sıralı aşamalar halinde gruplandırmalarıdır:

  1. Aşamayı Seri Hale Getirme
  2. İlkeler bir aşamada değil
  3. Seri Durumdan Çıkarma Aşaması
  4. Yeniden Deneme Aşaması

Aşamalar, serileştirme ilkelerinin önce uygulanması ve en son yeniden deneme ilkelerinin uygulanmasıyla birlikte yukarıdaki sırayla gerçekleşir. Çoğu özel ilke ikinci demette yer alır ve aşama adı verilmez.

İşlem hattına bir ilke eklerken, bir ilkenin yalnızca hangi aşamada olduğunu değil, aynı zamanda herhangi bir bağımlılığı olup olmadığını da belirtebilirsiniz:

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

beforePolicies yeni ilkenin daha önce yürütülmesi gereken ilkelerdir ve afterPolicies yeni ilkenin sonrasında gerçekleşmesi gereken ilkelerdir. Benzer şekilde, afterPhase ilkenin yalnızca belirtilen aşama oluştuktan sonra yürütülmesi gerektiği anlamına gelir.

Bu söz dizimi, özel ilke yazarlarının kullanarak createPipelineFromOptionsbir işlem hattı oluştururken kendi ilkeleriyle tarafından @azure/core-https sağlanan yerleşik ilkeler arasında gerekli ilişkileri ifade etmesine olanak tanır.

Uygulayıcılar, kullanarak createEmptyPipelineyeni bir tane oluşturmak zorunda kalmadan mevcut Pipeline bir ilkeyi değiştirmek istemeleri durumunda ilkeleri ada veya aşamaya göre de kaldırabilir. clone yöntemi özellikle özgün öğesini değiştirmeden yeniden Pipeline oluştururken yararlıdır.

Diğer tüm kısıtlamalar karşılandıktan sonra ilkeler eklendikleri sırayla uygulanır.

Örnekler

Örnekler klasöründe bulunabilir samples .

Sonraki adımlar

komutunu yürüterek rushx testtestleri yerel olarak derleyebilir ve çalıştırabilirsiniz. Ortak sınıfların test gelişmiş kullanımını ve davranışını görmek için klasörü keşfedin.

Sorun giderme

Bu kitaplığı kullanırken sorunlarla karşılaşırsanız lütfen bir sorun bildirin.

Katkıda bulunma

Bu kitaplığa katkıda bulunmak isterseniz, kodu derleme ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.

İzlenimler