Antipattern: Özel kod kullanarak veya hedef olarak proxy içinde proxy çağırma

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Edge, bir API Proxy'sini başka bir API Proxy'sinden çağırabilmenizi sağlar. Bu özellik, özellikle diğer API Proxy'leri tarafından kullanılabilecek yeniden kullanılabilir kod içeren bir API Proxy'niz varsa yararlıdır.

Antipattern

Hedef uç noktasında HTTPTargetConnection kodu veya özel JavaScript kodu kullanılarak bir API Proxy'sinin diğerinden çağrılması ek ağ atlamasına neden olur.

HTTPTargetConnection kullanarak Proxy 1'den Proxy 2'yi çağırma

Aşağıdaki kod örneği, HTTPTargetConnection kullanarak Proxy 1'den Proxy 2'yi çağırır:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>http://myorg-test.apigee.net/proxy2</URL>
</HTTPTargetConnection>

JavaScript kodundan Proxy 1'den Proxy 2'yi çağırın

Bir sonraki kod örneği, JavaScript kullanarak Proxy 1'den Proxy 2'yi çağırır:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('http://myorg-test.apigee.net/proxy2);
response.waitForComplete();

Kod Akışı

Bunun neden doğal bir dezavantajı olduğunu anlamak için aşağıdaki şemada gösterildiği gibi bir isteğin hangi rotayı izlediğini anlamamız gerekir:

Şekil 1: Kod Akışı

Şemada gösterildiği gibi bir istek, Yönlendirici ve Mesaj İşleyici de dahil olmak üzere birden fazla dağıtılmış bileşene aktarılır.

Yukarıdaki kod örneklerinde, Proxy 1'den Proxy 2'nin çağrılması, isteğin çalışma zamanında geleneksel yol (yani, Yönlendirici > MP) üzerinden yönlendirilmesi gerektiği anlamına gelir. Bu, bir istemciden API çağırmaya benzer ve böylece gecikmeye katkıda bulunan birden fazla ağ atlaması oluşturmaya benzer. Proxy 1 isteğinin MP'ye "ulaştığı" göz önünde bulundurulduğunda bu duraklamalar gerekli değildir.

Etki

Bir API Proxy'sinin başka bir API Proxy'sinden çağrılması, gereksiz ağ atlamalarına neden olur. Diğer bir deyişle, isteğin bir Mesaj İşleyiciden başka bir Mesaj İşleyiciye aktarılması gerekir.

En iyi uygulama

  • Bir API Proxy'sini başka bir API'den çağırmak için proxy zincirleme özelliğini kullanın. Proxy zincirleme, hedef uç noktaya (başka bir API Proxy'si) referans vermek için yerel bağlantı kullandığından daha verimlidir.

    Kod örneği, uç nokta tanımınızda LocalTargetConnection kullanılarak proxy zincirlemesini gösterir:

    <!-- /antipatterns/examples/2-3.xml -->
    <LocalTargetConnection>
      <APIProxy>proxy2</APIProxy>
      <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>
    

    Çağrılan API Proxy'si aynı Mesaj İşleyici içinde yürütülür. Bu nedenle, aşağıdaki şekilde gösterildiği gibi ağ atlamasından kaçınır:

    Şekil 2: Proxy Zincirleme ile Kod Akışı

Daha fazla bilgi