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

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Edge, bir API Proxy'sini başka bir API Proxy'sinden çağırmanıza olanak tanır. Bu özellik, özellikle de diğer API Proxy'leri tarafından kullanılabilecek yeniden kullanılabilir kod içeren bir API Proxy'niz olmalıdır.

Antipattern

Hedef uç noktasında HTTPTargetConnection kullanarak veya başka bir API'den bir API Proxy'si çağırma özel JavaScript kodu 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>

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

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 talebin yönlendirilmesini sağlamamız gerekir. aşağıdaki diyagramda gösterildiği gibidir:

Şekil 1: Kod Akışı

Şemada gösterildiği gibi, bir istek aşağıdakiler de dahil olmak üzere birden çok dağıtılmış bileşenden geçer: Yönlendirici ve Mesaj İşleyici.

Yukarıdaki kod örneklerinde, Proxy 2'nin Proxy 1'den çağrılması, isteğin yönlendirilmesi gerektiği anlamına gelir geleneksel rota üzerinden (yani Yönlendirici > MP) ilerler. Bu işlem, API çağırmaya benzer. ve böylece gecikmeyi artıran birden çok ağ atlaması yapabilir. Bu atlama noktaları Proxy 1 isteğinin zaten "ulaşıldığını" göz önünde bulundurarak gereksiz karar vermemiz gerek.

Etki

Bir API Proxy'sinin başka bir API Proxy'sinden çağrılması, gereksiz ağ atlamalarına neden olur. isteğinin bir Mesaj İşleyiciden başka bir Mesaj İşleyene iletilmesi gerekir.

En iyi uygulama

  • Proxy zinciri kullanma özelliğini kullanmanızı öneririz. Proxy zinciri oluşturma hedef uç noktaya (başka bir API Proxy'si) başvurmak için yerel bağlantı kullandığından daha verimlidir.

    Kod örneği, uç noktanızda LocalTargetConnection kullanarak proxy zincirlemesini gösterir tanım:

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

    Çağrılan API Proxy'si, aynı Mesaj İşleyen içinde yürütülür; sonuç olarak aşağıda gösterildiği gibi ağ atlamasını sağlar:

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

Daha fazla bilgi