API proxy'si yapılandırma referansı

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

Apigee Edge ile çalışan bir geliştirici olarak ana geliştirme faaliyetleriniz arasında API'ler veya arka uç hizmetleri için proxy işlevi gören API proxy'lerini yapılandırma. Bu doküman, referans değeri olarak kullanabilirsiniz.

API proxy'leri oluşturmayı öğreniyorsanız Basit bir API derleyin proxy'si aracılığıyla gönderin.

Proxy yapılandırmalarını düzenlemenin en yaygın yolları şunlardır:

Proxy yapılandırmalarının yerel olarak geliştirilmesi

Proxy yapılandırmalarınızı yerel bir makinede düzenleyebilmek için indirebilirsiniz. Zaman işlemi tamamladıktan sonra sonuçları Edge'e yüklüyorsunuz. Bu yaklaşım, proxy'yi entegre etmenize olanak tanır. kaynak denetimi, sürüm oluşturma ve diğer paylaşılan iş akışlarınıza ekleyebilirsiniz. Ayrıca, bir proxy yapılandırması üzerinde yerel olarak çalışırken kendi XML düzenleyicinizi ve doğrulamanızı kullanabilirsiniz. araçlar.

Bu bölümde, mevcut bir proxy yapılandırma dosyasını indirmek, düzenlemek, sonra da dağıtım için Edge'e geri yükleyebilirsiniz. Ayrıca şunu da kullanabilirsiniz: Apigeetool kullanarak yeni bir proxy yapılandırması indirip dağıtın (fetchproxy ve deployproxy komutlarını kullanın.)

Kullanıcı arayüzünü kullanarak bir proxy yapılandırmasını yerel olarak düzenlemek için:

  1. Edge kullanıcı arayüzünde geçerli proxy yapılandırmasını indirin. (API Proxy'lerinde Proje > Düzeltmeyi indirin.)
  2. Yerel makinenizde yeni bir dizin oluşturun ve indirilen ZIP dosyasını somut olarak ortaya koyar.

    ZIP dosyasını genişletmek için aşağıdaki gibi unzip gibi bir yardımcı program kullanabilirsiniz: örnek gösterilmektedir:

    mkdir myappdir
    unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir

    ZIP dosyasının genişletilmiş içeriği aşağıda açıklanan yapıya benzer olmalıdır: API proxy yapısı.

  3. Kaynak dosyaları gerektiği şekilde düzenleyin. Proxy'deki kaynak dosyaların açıklaması için yapılandırma için Yapılandırma dosyaları ve API proxy'sinin dizin yapısı hakkında daha fazla bilgi edinin.

    Örneğin, sağlık izleme hakkında daha fazla bilgi edinmek istiyorsanız /apiproxy/targets/ dizini. Bu dizindeki varsayılan dosya default.xml olarak değişir. Ancak farklı adlara sahip dosyalar farklı olabilir. koşullu hedefler.

    Bu durumda, TargetEndpoint yapılandırma dosyası ve dizini mevcut değilse oluşturabilirsiniz.

  4. Proxy yapılandırma dosyalarını düzenlemeyi bitirdikten sonra, değişikliklerinizi kaydettiğinizden emin olun.
  5. ZIP dosyalarını genişlettiğinizde oluşturduğunuz yeni dizine (dosyanın kök dizini) geçin genişletilmiş yapılandırma dosyalarını kullanabilirsiniz.

    Örneğin, dosyaları /myappdir dizinine genişlettiyseniz aşağıdaki örnekte gösterildiği gibi bu dizin gereklidir:

    cd myappdir

    Proxy yapılandırma dosyalarınızı yeniden arşivlemeden önce bu dizine geçmeniz gerekir ZIP dosyasına /myappdir dizininin dahil edilmesini istemediğinizden. ZIP dosyasındaki en üst dizin /apiproxy olmalıdır.

  6. Yeni veya değiştirilmiş dosyalar da dahil olmak üzere proxy yapılandırma dosyalarını yeniden arşivleyin. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için yardımcı programı (zip gibi) içerir:
    zip my-new-proxy.zip -r .

    ZIP dosyasındaki en üst dizin /apiproxy olmalıdır.

    ZIP dosyasının adına ilişkin özel bir gereklilik yoktur. Örneğin bir web sitesi için düzeltme numarasını artırın veya dosya adında tarihi belirtin, ancak bunu yaptığınızda hata ayıklama veya kaynak kontrolü için kullanışlıdır.

    Edge, yükleme yaptığınızda yeni proxy yapılandırmasının düzeltme numarasını sizin için artırır somut olarak ortaya koyar.

  7. Edge kullanıcı arayüzünü kullanarak yeni proxy yapılandırmasını yükleyin. (API Proxy'lerinde Proje > Yeni bir Düzeltme yükleyin.)

    Bundle is invalid. Empty bundle. gibi bir hata alırsanız şunları kontrol edin: ZIP dosyanızın en üst düzey dizini /apiproxy. Doğru değilse proxy yapılandırma dosyalarını genişletmek için kullanabilirsiniz.

    Yeni proxy yapılandırmanızı yükledikten sonra Edge düzeltme numarasını artırır ve Düzeltme Özeti görünümünde görüntülenir.

    Edge, kullanıcı arayüzüyle yükledikten sonra yeni düzeltmeyi sizin için dağıtmaz.

  8. Yeni düzeltmenizi dağıtın.

Daha fazla bilgi için bkz. Eğitim: Kullanıcı arayüzünü ve yönetim API'sini kullanarak proxy indirme Apigee Topluluğu.

API proxy'si yapısı

API proxy'si aşağıdaki yapılandırmadan oluşur:

Temel Yapılandırma API proxy'si için birincil yapılandırma ayarları. Temel Yapılandırma.
ProxyEndpoint Yapılandırması Gelen HTTP bağlantısı ayarları (uygulama isteğinde bulunmaktan Apigee Edge'e), istek yanıt akışları ve politika ekleri. ProxyEndpoint bölümünü inceleyin.
TargetEndpoint Yapılandırması Giden HTTP bağlantısı ayarları (Apigee Edge'den arka uç hizmetine), istek ile yanıt akışları ve politika ekleri. TargetEndpoint bölümünü inceleyin.
Akışlar Politikaların geçerli olabileceği ProxyEndpoint ve TargetEndpoint istek ve yanıt ardışık düzenleri ekli. Akışlar başlıklı yardım makalesine bakın.
Politikalar Apigee Edge politika şemalarına uyan XML biçimli yapılandırma dosyaları. Görüntüleyin Politikalar.
Kaynaklar Özel mantığı çalıştırmak için politikalar tarafından başvurulan komut dosyaları, JAR dosyaları ve XSLT dosyaları. Görüntüleyin Kaynaklar.

API proxy'si dizin yapısı ve içerikler

Yukarıdaki tabloda yer alan bileşenler, aşağıdaki yapılandırma dosyalarında tanımlanmıştır: dizin yapısı:

apiproxy'nin kök olduğu dizin yapısını gösterir. Doğrudan
    apiproxy dizini politikalar, proxy'ler, kaynaklar ve hedef dizinleridir. Ayrıca,
    weatherapi.xml dosyasına gidin.

Yapılandırma dosyaları ve dizin API proxy'sinin yapısı

Bu bölümde, API proxy'sinin yapılandırma dosyaları ve dizin yapısı açıklanmaktadır.

Temel Yapılandırma

/apiproxy/weatherapi.xml

API proxy'si için temel yapılandırmadır. Bu yapılandırma, API proxy'sinin adını tanımlar. Ad bir kuruluş içinde benzersiz olmalıdır.

Örnek yapılandırma:

<APIProxy name="weatherapi">
</APIProxy>

Temel Yapılandırma Öğeleri

Ad Açıklama Varsayılan Zorunlu mu?
APIProxy
name Bir kuruluş içinde benzersiz olması gereken API proxy'sinin adı. Karakterler yalnızca aşağıdakilerle sınırlıdır: A-Za-z0-9_-. Yok Evet
revision API proxy yapılandırmasının düzeltme numarası. Açık bir şekilde oluşturmanız gerekmez, çünkü Apigee Edge, API'nin mevcut revizyonunu otomatik olarak izler. temsil eder. Yok Hayır
ConfigurationVersion Bu API proxy'sinin uygun olduğu API proxy'si yapılandırma şemasının sürümü. İlgili içeriği oluşturmak için kullanılan şu anda desteklenen tek değer mainVersion 4 ve minimalVersion 0 değerleridir. Bu ayar şunlar olabilir: gelecekte API proxy biçiminin geliştirilmesini sağlamak için kullanılır. 4.0 Hayır
Description API proxy'sinin metin biçiminde açıklaması. Sağlanmışsa açıklama şurada görüntülenir: Edge yönetim arayüzü. Yok Hayır
DisplayName Özelliğin name özelliğinden farklı olabilecek, kullanıcı dostu bir ad API proxy yapılandırması. Yok Hayır
Policies Bu API proxy'sinin /policies dizinindeki politikaların listesi. Bu kurstan sonra Normalde bu öğeyi yalnızca Edge yönetim arayüzü kullanılarak API proxy'si oluşturulduğunda görür. Bu sadece bir 'manifest'tir ve bu reklamların içeriğini görmek için tasarlanmış API proxy'si. Yok Hayır
ProxyEndpoints Bu API proxy'sinin /proxies dizinindeki ProxyEndpoints listesi. Siz normalde bu öğeyi yalnızca Edge kullanılarak API proxy'si oluşturulduğunda görür. yönetim arayüzü. Bu sadece bir 'manifest'tir görünürlük sağlamak için tasarlanmış Google Analytics 360'a ihtiyacınız olacaktır. Yok Hayır
Resources /resources içindeki kaynakların (JavaScript, Python, Java, XSLT) listesi bu API proxy'sinin dizinini oluşturur. Normalde bu öğeyi yalnızca API proxy'si şu olduğunda görürsünüz: kenar yönetim kullanıcı arayüzü kullanılarak oluşturulur. Bu sadece bir 'manifest'tir düzgün şekilde tasarlanan API proxy'sinin içeriğine dair görünürlük sağlar. Yok Hayır
Spec API proxy'si ile ilişkili OpenAPI Spesifikasyonu'nu tanımlar. Değer bir URL'ye veya spesifikasyon deposundaki bir yola ayarlanmış olması gerekir.
.
. Not: Spesifikasyon deposu, Yeni Edge deneyiminde mevcuttur gerekir. Spesifikasyon deposu hakkında daha fazla bilgi için Yönetim ve paylaşma sayfasına bakın. spesifikasyonlarını inceleyin.
Yok Hayır
TargetServers Bu API proxy'sinin herhangi bir TargetEndpoint'inde başvurulan TargetServer'ların listesi. Bu kurstan sonra Normalde bu öğeyi yalnızca Edge yönetim arayüzü kullanılarak API proxy'si oluşturulduğunda görür. Bu sadece bir 'manifest'tir ve bu reklamların içeriğini görmek için tasarlanmış API proxy'si. Yok Hayır
TargetEndpoints Bu API proxy'sinin /targets dizinindeki TargetEndpoints listesi. Siz normalde bu öğeyi yalnızca Edge kullanılarak API proxy'si oluşturulduğunda görür. yönetim arayüzü. Bu sadece bir 'manifest'tir görünürlük sağlamak için tasarlanmış Google Analytics 360'a ihtiyacınız olacaktır. Yok Hayır

ProxyEndpoint

Aşağıdaki resimde istek/yanıt akışı gösterilmektedir:

HTTP çağıran bir istemci gösterir
  geliştirmenizi sağlar. İstek, yapılmadan önce proxy uç noktasından ve ardından hedef uç noktasından geçer.
  HTTP hizmeti tarafından işlenir. Yanıt, hedef tamamlamadan geçer ve ardından
  proxy uç noktasını gösterir.

/apiproxy/proxies/default.xml

ProxyEndpoint yapılandırması, API'lerin gelen (istemciye yönelik) arayüzünü tanımlar temsil eder. ProxyEndpoint yapılandırması yaptığınızda, varsayılan olarak istemci uygulamalarının ("apps") proxy uygulanan API'yi nasıl çağırması gerektiğini tanımlar.

Aşağıdaki örnek ProxyEndpoint yapılandırması, /apiproxy/proxies:

<ProxyEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPProxyConnection>
    <BasePath>/weather</BasePath>
    <VirtualHost>default</VirtualHost>
  </HTTPProxyConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <RouteRule name="default">
    <TargetEndpoint>default</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>

Temel ProxyEndpoint'te gerekli yapılandırma öğeleri şunlardır:

ProxyEndpoint Yapılandırması Elements

Ad Açıklama Varsayılan Zorunlu mu?
ProxyEndpoint
name ProxyEndpoint'in adı. Aşağıdaki durumlarda, API proxy yapılandırması içinde benzersiz olmalıdır (nadir durumlarda) birden fazla ProxyEndpoint tanımlanır. Kullanmanıza izin verilen karakterler , ad aşağıdakilerle sınırlıdır: A-Za-z0-9._\-$ %. Yok Evet
PreFlow Bir istek veya yanıtın PreFlow akışındaki politikaları tanımlar. Yok Evet
Flows
Bir istek veya yanıtın koşullu akışlarındaki politikaları tanımlar.
Yok Evet
PostFlow
Bir istek veya yanıtın PostFlow akışındaki politikaları tanımlar.
Yok Evet
HTTPProxyConnection API proxy'si ile ilişkili ağ adresini ve URI yolunu tanımlar
BasePath

Apigee Edge tarafından yönlendirme için kullanılan URI yolunu benzersiz şekilde tanımlayan gerekli bir dize doğru API proxy'sine yönlendirmesini sağlayabilirsiniz.

BasePath,/weather API proxy'sinin ana URL'si (örneğin, http://apifactory-test.apigee.net). BasePath, bir ortam içinde benzersiz olmalıdır. Benzersizlik, bir API proxy'si ile doğrulandığında oluşturulması veya içe aktarılması gerekir.

Temel yollarda joker karakter kullanma

Bir veya daha fazla "*" kullanabilirsiniz API proxy'si temel yollarındaki joker karakterler. Örneğin, /team/*/members yolu müşterilerin telefon etmesine olanak tanır https://[host]/team/blue/members ve Şunlara gerek kalmadan https://[host]/team/green/members: yeni ekipleri desteklemek için yeni API proxy'leri oluşturun. /**/ işaretinin desteklenmediğini unutmayın.

Önemli: Apigee, "*" joker karakteri kullanılmasını DESTEKLEMEZ olarak öğesidir. Örneğin, şu DESTEKLENMEZ: /*/search. Temel yolu "*" ile başlatma beklenmedik hatalara yol açabilir. geçerli yolları tanımlar.

/ Evet
VirtualHost

Bir API proxy'sini ortam için belirli temel URL'lerle ilişkilendirir. VirtualHost, bir adlandırılmış yapılandırma ile tanımlar.

Bir ProxyEndpoint için tanımlanan adlandırılmış VirtualHosts, web sitesindeki alanları ve bağlantı noktalarını API proxy'sinin açığa çıkarıldığı ve buna bağlı olarak, uygulamaların bir API'yi çağırmak için kullandığı URL temsil eder.

Varsayılan olarak, bir ortam için iki adlandırılmış VirtualHost tanımlanmıştır: default ve secure. Bir kuruluş, özelleştirilebilir alanlar. Örneğin, bir API proxy'sinin yalnızca HTTPS üzerinden kullanılabildiğinden emin olmak için secure ana makinesindeki HTTPProxyConnection'da VirtualHost.

varsayılan Hayır
Properties İsteğe bağlı HTTP yapılandırma ayarları, bir <ProxyEndpoint> Yok Hayır
FaultRules
ProxyEndpoint'in bir hataya nasıl tepki vereceğini tanımlar. Hata kuralı iki öğeler:
  • Önceden tanımlanmış hataya göre işlenecek hatayı belirten bir Koşul hatanın kategorisi, alt kategorisi veya adı
  • için hata kuralının davranışını tanımlayan bir veya daha fazla politika ilgili Koşul

Hataları işleme bölümüne bakın.

Yok Hayır
DefaultFaultRule

Açıkça belirtilmeyen tüm hataları (sistem, aktarım, mesajlaşma veya politika) ele alır. başka bir hata kuralı tarafından ele alınır.

Hataları işleme bölümüne bakın.

Yok Hayır
RouteRule ProxyEndpoint istek ardışık düzeni. Genellikle RouteRule, adlandırılmış bir TargetEndpoint'e işaret eder değil, aynı zamanda doğrudan bir URL'ye de işaret edebilir.
Name RouteRule için ad sağlayan gerekli özellik. Karakterleriniz adda kullanımına izin verilenlerle sınırlıdır: A-Za-z0-9._\-$ %. Örneğin, Örneğin, Cat2 %_ yasal bir addır. Yok Evet
Condition Çalışma zamanında dinamik yönlendirme için kullanılan isteğe bağlı bir koşullu ifadedir. Koşullu RouteRules, örneğin arka ucu desteklemek üzere içerik tabanlı yönlendirmeyi etkinleştirmek için kullanışlıdır sürüm oluşturma. Yok Hayır
TargetEndpoint

Adlandırılmış bir TargetEndpoint yapılandırmasını tanımlayan isteğe bağlı bir dize. Adlandırılmış TargetEndpoint ise aynı API proxy'sinde tanımlanan herhangi bir TargetEndpoint /targets dizininden).

TargetEndpoint'i adlandırarak istek mesajlarının nereye yönlendirileceğini belirtirsiniz ProxyEndpoint istek ardışık düzeni tarafından işlendikten sonra tamamlanır. Bunun isteğe bağlı bir uygulama olduğunu, ayarını değiştirebilirsiniz.

Bir ProxyEndpoint doğrudan URL'yi çağırabilir. Örneğin, bir JavaScript veya Java kaynağı, HTTP istemcisi rolüyle çalışması durumunda, TargetEndpoint, istekleri arka uç hizmetine yönlendiren hedeftir.

Yok Hayır
URL ProxyEndpoint, altında depolanabilecek tüm TargetEndpoint yapılandırmalarını atlayarak /targets. Yok Hayır

RouteRules'u yapılandırma

Adlandırılmış TargetEndpoint, /apiproxy/targets altındaki bir yapılandırma dosyasını RouteRule, ProxyEndpoint tarafından işlendikten sonra bir isteği yönlendirir.

Örneğin, aşağıdaki RouteRule, yapılandırmanın /apiproxy/targets/myTarget.xml:

<RouteRule name="default">
  <TargetEndpoint>myTarget</TargetEndpoint>
</RouteRule>

Doğrudan URL Çağrısı

ProxyEndpoint de doğrudan arka uç hizmetini çağırabilir. Doğrudan URL çağrısı, /apiproxy/targets altında TargetEndpoints yapılandırması adlı) İşte bu nedenle TargetEndpoint isteğe bağlı bir API proxy yapılandırmasıdır ancak uygulamada doğrudan çağrı proxy uç noktasının kullanılmasına izin verilmez.

Örneğin, aşağıdaki RouteRule, bir HTTP çağrısı yapar http://api.mycompany.com/v2

<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL> 
</RouteRule>

Koşullu Rotalar

RouteRules, çalışma zamanında dinamik yönlendirmeyi desteklemek için zincirlenebilir. Gelen istekler adlandırılmış TargetEndpoint yapılandırmalarına, doğrudan URL'lere veya ikisinin bir kombinasyonuna yönlendirilir HTTP üstbilgilerine, ileti içeriğine, sorgu parametrelerine veya gün, yerel ayar vb.

Koşullu RouteRules, Apigee Edge'deki diğer koşullu ifadeler gibi çalışır. Koşul referansı ve Değişkenler referansı bölümlerine bakın.

Örneğin, aşağıdaki RouteRule kombinasyonu ilk olarak gelen isteği değerlendirir. HTTP üstbilgisinin değeri. routeTo HTTP üstbilgisinde değer varsa TargetEndpoint1, ardından istek, adlı hedef uç noktaya yönlendirilir. TargetEndpoint1. Aksi halde gelen istek http://api.mycompany.com/v2

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>
.

Boş Rotalar

İstek mesajının çalışmadığı senaryoları desteklemek için boş bir RouteRule tanımlanabilir TargetEndpoint'e iletilmesi gerekiyor. Bu, ProxyEndpoint öğesinin tüm düzenlemeleri yapması durumunda Örneğin, harici bir hizmeti çağırmak için JavaScript kullanarak veya API Hizmetleri'ne yapılan bir aramadan veri almak anahtar/değer deposundan yararlanın.

Örneğin, aşağıda boş bir Rota tanımlanır:

<RouteRule name="GoNowhere"/>

Koşullu boş Rotalar faydalı olabilir. Aşağıdaki örnekte, boş bir Rota HTTP üstbilgisi request.header.X-DoNothing şundan farklı bir değere sahip olduğunda yürütülür: null.

<RouteRule name="DoNothingOnDemand">
  <Condition>request.header.X-DoNothing != null</Condition>
</RouteRule>

RouteRules zincirlemesi kullanılabileceğini unutmayın. Bu nedenle, koşullu boş bir Rota genellikle bir bileşeninin bileşenidir.

Koşullu boş Rota'nın pratik bir kullanımı, önbelleğe almayı destekler. Değeri kullanarak ilkesini seçerseniz bir API proxy'sini yapılandırarak Önbellekten bir giriş sunulduğunda boş Rota.

<RouteRule name="DoNothingUnlessTheCacheIsStale">
  <Condition>lookupcache.LookupCache-1.cachehit is true</Condition>
</RouteRule>

TargetEndpoint

HTTP çağıran bir istemci gösterir
  geliştirmenizi sağlar. İstek, yapılmadan önce proxy uç noktasından ve ardından hedef uç noktasından geçer.
  HTTP hizmeti tarafından işlenir. Yanıt, hedef tamamlamadan geçer ve ardından
  proxy uç noktasını gösterir.

TargetEndpoint, ProxyEndpoint'in giden eşdeğeridir. TargetEndpoint, şu şekilde çalışır: bir arka uç hizmetine veya API'ye yönlendirmesi için istek gönderir ve yanıtları alır.

API proxy'sinde herhangi bir TargetEndpoint'in olması gerekmez. ProxyEndpoints, URL'leri çağıracak şekilde yapılandırılabilir doğrudan ekleyebilirsiniz. TargetEndpoints bulunmayan bir API proxy'si genellikle bir arka uç hizmetini doğrudan çağıran veya Java ya da JavaScript'e dokunun.

Hedef Uç Nokta Yapılandırması

/targets/default.xml

TargetEndpoint, Apigee Edge'den başka bir hizmete ya da hizmete giden bağlantıyı tanımlar. gösterir.

Örnek bir TargetEndpoint yapılandırması aşağıda verilmiştir:

<TargetEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <SSLInfo/>
  </HTTPTargetConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <ScriptTarget/>
  <LocalTargetConnection/>
</TargetEndpoint>

Hedef Uç Nokta Yapılandırması Elements

TargetEndpoint, bir hedefi aşağıdaki yöntemlerden biriyle çağırabilir:

  • HTTP(S) çağrıları için HTTPTargetConnection
  • Yerel proxy'den proxy'ye zincirleme için LocalTargetConnection
  • Edge'de barındırılan bir sayfaya yapılan çağrılar için ScriptTarget Node.js komut dosyası

TargetEndpoint'te bunlardan yalnızca birini yapılandırın.

Ad Açıklama Varsayılan Zorunlu mu?
TargetEndpoint
name API proxy'si içinde benzersiz olması gereken TargetEndpoint adı yapılandırma. TargetEndPoint'in adı, ProxyEndpoint RouteRule'da aşağıdakileri sağlamak için kullanılır: için doğrudan isteklerdir. Adda kullanmanıza izin verilen karakterler şunlarla sınırlıdır: A-Za-z0-9._\-$ %. Yok Evet
PreFlow Bir istek veya yanıtın PreFlow akışındaki politikaları tanımlar. Yok Evet
Flows
Bir istek veya yanıtın koşullu akışlarındaki politikaları tanımlar.
Yok Evet
PostFlow
Bir istek veya yanıtın PostFlow akışındaki politikaları tanımlar.
Yok Evet
HTTPTargetConnection

Alt öğeleriyle HTTP üzerinden arka uç kaynak erişimini belirtir.

HTTPTargetConnection kullanıyorsanız diğer hedef bağlantı türlerini yapılandırmayın (ScriptTarget veya LocalTargetConnection).

URL TargetEndpoint'in yönlendirme yaptığı arka uç hizmetinin ağ adresini tanımlar mesaj iste. Yok Hayır
LoadBalancer

Bir veya daha fazla adlandırılmış TargetServer yapılandırması tanımlar. Adlandırılmış TargetServer yapılandırmaları, 2 veya daha fazla uç nokta yapılandırması tanımlayan yük dengeleme için kullanılabilir bağlantılar.

API proxy yapılandırmalarını somut yapılandırmalardan ayırmak için TargetServer'ları da kullanabilirsiniz. arka uç hizmeti uç nokta URL'leri.

Bkz. Yükleme arka uç sunucularında dengeyi kurma başlıklı makaleye göz atın.

Yok Hayır
Properties İsteğe bağlı HTTP yapılandırma ayarları, bir <TargetEndpoint> Yok Hayır
SSLInfo İsteğe bağlı olarak TLS/SSL'yi kontrol etmek için bir TargetEndpoint'te TLS/SSL ayarlarını tanımlayın API proxy'si ile hedef hizmet arasındaki bağlantı. TLS/SSL Hedef Uç Nokta Yapılandırması başlıklı makaleye bakın. Yok Hayır
LocalTargetConnection Alt öğeleriyle, ağı atlayarak yerel olarak ulaşılacak bir kaynağı belirtir yük dengeleme ve mesaj işlemcileri gibi özellikler.

Hedef kaynağı belirtmek için APIProxy alt öğesini ( ProxyEndpoint öğesi) veya Yol alt öğesini kullanın.

Daha fazla bilgi için Zincir API'si proxy'leri bölümüne bakın birlikte kullanılabilir.

LocalTargetConnection kullanıyorsanız diğer hedef bağlantı türlerini yapılandırmayın (HTTPTargetConnection veya ScriptTarget).

APIProxy İstekler için hedef olarak kullanılacak API proxy'sinin adını belirtir. Hedef proxy İstek gönderen proxy ile aynı kuruluş ve ortamda olmalıdır. Bu bir Path öğesi kullanmaya bir alternatiftir. Yok Hayır
ProxyEndpoint Hedef proxy'nin ProxyEndpoint adını belirtmek için APIProxy ile kullanılır. Yok Hayır
Path Bir API proxy'sinin, istekler için hedef olarak kullanılacak uç nokta yolunu belirtir. Hedef proxy, istekleri gönderen proxy ile aynı kuruluş ve ortamda olmalıdır. Bu APIProxy kullanmaya bir alternatiftir. Yok Hayır
FaultRules
TargetEndpoint'in bir hataya nasıl tepki vereceğini tanımlar. Hata kuralı iki öğeler:
  • Önceden tanımlanmış hataya göre işlenecek hatayı belirten bir Koşul hatanın kategorisi, alt kategorisi veya adı
  • için hata kuralının davranışını tanımlayan bir veya daha fazla politika ilgili Koşul

Hataları işleme bölümüne bakın.

Yok Hayır
DefaultFaultRule

Açıkça belirtilmeyen tüm hataları (sistem, aktarım, mesajlaşma veya politika) ele alır. başka bir FaultRule tarafından işleniyor.

Hataları işleme bölümüne bakın.

Yok Hayır
ScriptTarget
ResourceURL

Kaynak türünü (düğüm) ve TargetEndpoint işlevini uygular.

<ResourceURL>node://server.js</ResourceURL>

Komut dosyasının, API proxy'nizin kaynak dosyalarına eklenmesi gerekir. Bkz. mevcut API proxy'si için geçerlidir.

ScriptTarget kullanıyorsanız diğer hedef bağlantı türlerini yapılandırmayın (HTTPTargetConnection veya LocalTargetConnection).

Yok Evet
EnvironmentVariable

İsterseniz ortam değişkenlerini ana Node.js komut dosyasına aktarabilirsiniz.

Ucu Anlama bölümüne bakın Node.js modülleri için destek.

Yok Hayır
Arguments

İsterseniz ana Node.js komut dosyasına bağımsız değişkenleri iletin.

Ucu Anlama bölümüne bakın Node.js modülleri için destek.

Yok Hayır

TLS/SSL Hedef Uç Noktası Yapılandırması

TargetEndpoints genellikle HTTPS bağlantılarını heterojen arka uçla yönetmelidir geliştirmenin harika bir yoludur. Bu nedenle, çeşitli TLS/SSL yapılandırma ayarları desteklenir.

ziyaret edin.

TLS/SSL TargetEndpoint Yapılandırma Öğeleri

Ad Açıklama Varsayılan Zorunlu mu?
SSLInfo
Enabled Uç nokta için TLS/SSL'nin etkin olup olmadığını belirtir. <URL>, HTTPS protokolünü belirtiyorsa varsayılan değer true olur <URL>, HTTP'yi belirtiyorsa false. <URL>, HTTPS'yi belirtiyorsa doğru Hayır
TrustStore Güvenilir sunucu sertifikalarını içeren bir anahtar deposu. Yok Hayır
ClientAuthEnabled Giden istemci kimlik doğrulamasını (2 yönlü TLS/SSL) etkinleştiren bir ayar false Hayır
KeyStore Giden istemci kimlik doğrulaması için kullanılan özel anahtarlar içeren bir anahtar deposu Yok Evet (ClientAuthEnabled true ise)
KeyAlias Giden istemci kimlik doğrulaması için kullanılan özel anahtarın anahtar takma adı Yok Evet (ClientAuthEnabled true ise)
Ciphers

Giden TLS/SSL için desteklenen şifreler. Herhangi bir şifre belirtilmezse tüm şifreler kullanılmasına izin verilir.

Şifreleri kısıtlamak için desteklenen şifreleri listeleyen aşağıdaki öğeleri ekleyin:

<Ciphers>
 <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher>    
 <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher>
</Ciphers>
Yok Hayır
Protocols

Giden TLS/SSL için desteklenen protokoller. Hiçbir protokol belirtilmezse tümü JVM'de kullanılabilen protokollere izin verilir.

Protokolleri kısıtlamak için desteklenen protokollerin listelendiği aşağıdaki öğeleri ekleyin:

<Protocols>
 <Protocol>TLSv1.1</Protocol>
 <Protocol>TLSv1.2</Protocol>
</Protocols>
Yok Hayır
CommonName

Belirtilmişse hedef sertifikanın ortak adının doğrulandığı bir değer. Bu değer yalnızca TargetEndpoint ve TargetServer yapılandırmaları için geçerlidir. değil VirtualHost yapılandırmaları için geçerlidir.

Varsayılan olarak, belirtilen değer hedef sertifikanın ortak adıyla tam olarak eşleştirilir. Örneğin, <CommonName> için *.myhost.com değerini kullanma. yalnızca *.myhost.com tam değeri ortak ad olarak belirtilmişse hedef ana makine adını doğrular. hedef sertifika.

Apigee, isteğe bağlı olarak wildcardMatch özelliğini kullanarak joker karakterlerle eşleşme yapabilir.

Örneğin, hedef sertifikada abc.myhost.com olarak belirtilen bir ortak ad eşleştirilir ve doğrulanır. <CommonName> öğesi aşağıdaki gibi belirtilir:

<CommonName wildcardMatch="true">*.myhost.com</CommonName>

Yok Hayır

Giden istemci kimlik doğrulamasının etkin olduğu örnek TargetEndpoint

<TargetEndpoint name="default">
  <HttpTargetConnection>
        <URL>https://myservice.com</URL>
    <SSLInfo>
      <Enabled>true</Enabled>
      <ClientAuthEnabled>true</ClientAuthEnabled>
      <KeyStore>myKeystore</KeyStore>
      <KeyAlias>myKey</KeyAlias>
      <TrustStore>myTruststore</TrustStore>
    </SSLInfo>
  </HttpTargetConnection>
</TargetEndpoint>

Ayrıntılı talimatlar için TLS'yi Yapılandırma uçtan uca (Bulut ve Private Cloud).

Kullanım TLS/SSL değerlerini dinamik olarak ayarlamak için akış değişkenleri

Ayrıca, esnek çalışma zamanı gereksinimlerini desteklemek için TLS/SSL ayrıntılarını dinamik olarak ayarlayabilirsiniz. Örneğin, proxy'niz potansiyel olarak farklı iki hedefe bağlanıyorsa (bir test hedefi ve üretim hedefi içeriyorsa) API proxy'nizin, hangi ortamın ait olduğunu programatik olarak çağrısı ile uygun anahtar deposuna ve güven deposuna referansları dinamik olarak ayarlama. Aşağıdakiler Apigee Topluluğu makalesinde bu senaryo daha ayrıntılı olarak açıklanmakta ve dağıtılabilir API sunulmaktadır. proxy örnekleri: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html.

Aşağıdaki örnekte, <SSLInfo> etiketinin TargetEndpoint yapılandırmasında; değerler çalışma zamanında (ör. bir Java tarafından Açıklama metni, JavaScript politikası veya Mesaj Atama politikası. Kullanacağınız mesaj değişkenlerini URL'ler ayarlamak istediğiniz değerleri içermelidir.

Değişkenlere yalnızca aşağıdaki öğelerde izin verilir.

<SSLInfo>
    <Enabled>{myvars.ssl.enabled}</Enabled>
    <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled>
    <KeyStore>{myvars.ssl.keystore}</KeyStore>
    <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias>
    <TrustStore>{myvars.ssl.trustStore}</TrustStore>
</SSLInfo>
.

Kullanım TLS/SSL değerlerini dinamik olarak ayarlamak için kullanılan başvurular

HTTPS kullanan bir TargetEndpoint yapılandırırken TLS/SSL sertifikasının süresi dolarsa veya sistem yapılandırmasında yapılan bir değişiklik için sertifikayı güncellemeniz gerekir. İçinde TLS/SSL'yi yapılandırmak için statik değerler kullanarak veya kullanıyorsanız Mesaj İşleyicileri yeniden başlatmanız gerekebilir.

Daha fazla bilgi için bkz. TLS'yi güncelleme sertifikası hakkında daha fazla bilgi edinin.

Ancak isteğe bağlı olarak TargetEndpoint'i bir referans kullanacak şekilde yapılandırabilirsiniz: anahtar deposu veya güven deposu kullanın. Referans kullanmanın avantajı, referans TLS/SSL sertifikasını güncellemeden önce güncellemek için farklı bir anahtar deposuna veya güven deposuna işaret eden yeniden başlatmanız gerekebilir.

Örneğin, aşağıda, anahtar deposuna ilişkin bir referans kullanan bir TargetEndpoint gösterilmektedir:

<SSLInfo> 
    <Enabled>true</Enabled> 
    <ClientAuthEnabled>false</ClientAuthEnabled> 
    <KeyStore>ref://keystoreref</KeyStore> 
    <KeyAlias>myKeyAlias</KeyAlias> 
</SSLInfo>

Şu isimli referansı oluşturmak için aşağıdaki POST API çağrısını kullanın: keystoreref:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

Referans, anahtar deposunun adını ve türünü belirtir.

Referansı görüntülemek için aşağıdaki GET API çağrısını kullanın:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

Referansı daha sonra farklı bir anahtar deposuna işaret edecek şekilde değiştirmek için takma adın aşağıdaki PUT çağrısını kullanın:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

TargetEndpoint hedef yük dengeleme ile

TargetEndpoints, üç yük kullanarak birden fazla adlandırılmış TargetServers arasında yük dengelemeyi destekler algoritmalarından biridir.

Ayrıntılı talimatlar için Arka uç genelinde yük dengeleme başlıklı makaleye bakın tıklayın.

Politikalar

API proxy'sindeki /policies dizini, kullanılacak tüm politikaları içerir , API proxy'sindeki Akışlara ekli

Politika Yapılandırma Öğeleri

Ad Açıklama Varsayılan Zorunlu mu?
Policy
name

Politikanın dahili adı. Adda kullanabileceğiniz karakterler kısıtlanmıştır alıcı: A-Za-z0-9._\-$ %. Bununla birlikte, Edge yönetim arayüzü, alfasayısal olmayan karakterlerin otomatik olarak kaldırılması gibi kısıtlamalara tabidir.

İsteğe bağlı olarak, şu öğeyi etiketlemek için <DisplayName> öğesini kullanın: yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla değiştirin.

Yok Evet
enabled

Politikayı uygulamak için true olarak ayarlayın.

"Kapat" için false olarak ayarlandı politika. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true Hayır
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu çoğu politika için beklenen davranıştır.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false Hayır
async

Not: Bu özellik, politikanın eşzamansız olarak yürütülmesini sağlamaz. Çoğu durumda, bu ayarı varsayılan değer olan false olarak bırakın.

true olarak ayarlanırsa politika yürütme farklı bir cihaza aktarılır Böylece, ana iş parçacığı ek istekleri işleyebilir. Çevrimdışıyken İşlem tamamlandığında, ana ileti dizisi geri gelir ve iletiyi işlemeyi bitirir akışı sağlar. Bazı durumlarda, eşzamansız ayarın true olarak ayarlanması API proxy'sini iyileştirir bazı yolları da görmüştük. Ancak eşzamansız kullanımın aşırı kullanımı, çok fazla iş parçacığı olması durumunda performansı olumsuz etkileyebilir. bahsedeceğim.

API proxy'lerinde eşzamansız davranışı kullanmak için JavaScript nesne modeli konusuna bakın.

false Hayır

Politika Eki

Aşağıdaki resimde, API proxy akışlarının yürütme sırası gösterilmektedir:

HTTP hizmetini çağıran bir istemciyi gösterir. İstek,
  Her biri politikaları tetikleyen adımlar içeren ProxyEndpoint ve TargetEndpoint. 
  HTTP hizmeti yanıtı döndürür. Yanıt, TargetEndpoint tarafından işlenir ve ardından
  ProxyEndpoing, istemciye döndürülmeden önce. İstekte olduğu gibi yanıt işlenir
  adımlarda takip edin.

Yukarıda gösterildiği gibi:

Politikalar, Akışlar'a işleme adımları olarak eklendi. Politikanın adı şu amaçlarla kullanılır: işleme adımı olarak uygulanacak politikayı referans alın. Politika ekinin biçimi şu:

<Step><Name>MyPolicy</Name></Step>

Politikalar, bir Akışa eklendikleri sırayla uygulanır. Örneğin:

<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>

Politika Eki Yapılandırması Elements

Ad Açıklama Varsayılan Zorunlu mu?
Step
Name Bu Adım tanımı tarafından yürütülecek politikanın adı. Yok Evet
Condition Politikanın uygulanıp uygulanmayacağını belirleyen koşullu ifadedir. politikanın ilişkili bir koşulu varsa politika yalnızca doğru olarak değerlendirilir. Yok Hayır

Akışlar

ProxyEndpoint ve TargetEndpoint, istek ve yanıt mesajı için bir ardışık düzen tanımlar bahsedeceğim. İşleme ardışık düzeni, bir istek akışından ve bir yanıt akışından oluşur. Her istek akış ve yanıt akışı, bir veya daha fazla isteğe bağlı "koşullu" şeklinde bir PreFlow'a ayrılır veya "adlandırılmış" öğesidir.

  • PreFlow: Her zaman yürütülür. Koşullu Akışlardan önce yürütülür.
  • PostFlow: Her zaman yürütülür. Koşullu Akışlardan sonra yürütülür.

Ayrıca ProxyEndpoint'e, yanıt, istekte bulunan istemci uygulamasına döndürülür. Yalnızca MessageLogging politikası ve Google Cloud Logging Uzantısı eklenebilir bu akışa geri döneceğim. PostClientFlow, API proxy gecikmesini azaltır ve web yöneticileri için istemciye yanıt döndürülünceye kadar hesaplanmayan günlük kaydı (örneğin, client.sent.start.timestamp ve client.sent.end.timestamp.Akış kullanılır Yanıtın başlangıç ve bitiş zaman damgaları arasındaki zaman aralığını ölçmek için kullanılır. mesajını alırsınız.

Kısa bir "nasıl yapılır" videosunu izleyin

Video: PostClientFlow.

İleti günlük kaydı politikası eklenmiş bir PostClientFlow örneğini burada bulabilirsiniz.

    ...
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <PostClientFlow>
        <Request/>
        <Response>
            <Step>
                <Name>Message-Logging-1</Name>
            </Step>
        </Response>
    </PostClientFlow>
    ...

API proxy işleme ardışık düzeni, Akışları aşağıdaki sırayla yürütür:

Ardışık Düzen İsteme:

  1. Proxy İsteği Ön Akışı
  2. Proxy İsteği Koşullu Akışları (İsteğe Bağlı)
  3. Proxy İstek Sonrası Akışı
  4. Hedef İstek Ön Akışı
  5. Hedef İstek Koşullu Akışları (İsteğe Bağlı)
  6. Akış Sonrası Hedef İstek

Yanıt Ardışık Düzeni:

  1. Hedef Yanıt Ön Akışı
  2. Hedef Yanıt Koşullu Akışları (İsteğe Bağlı)
  3. Hedef Yanıt PostFlow
  4. Proxy Yanıtı Ön Akışı
  5. Proxy Yanıtı Koşullu Akışları (İsteğe Bağlı)
  6. Proxy Yanıt Sonrası Akışı
  7. PostClientFlow Yanıtı (İsteğe Bağlı)

ProxyEndpoint yapılandırmasında yalnızca politika ekleri bulunan Akışların yapılandırılması gerekir TargetEndpoint yapılandırmaları. PreFlow ve PostFlow, yalnızca bir ProxyEndpoint veya PreFlow veya PostFlow sırasında bir politikanın uygulanması gerektiğinde TargetEndpoint yapılandırması bahsedeceğim.

Koşullu akışların aksine PreFlow ve PostFlow öğelerinin sıralaması API proxy'si her birini ardışık düzende uygun bir noktada yürütür. nerede göründüklerinden bağımsız olarak Google Cloud'u da kullanabilirsiniz.

Koşullu Akışlar

ProxyEndpoints ve TargetEndpoints, sınırsız sayıda koşullu akışı (ayrıca (adlandırılmış akışlar) olarak bilinir.

API proxy'si, koşullu akışta belirtilen koşulu test eder ve karşılandığında, koşullu akıştaki işleme adımları API proxy'si tarafından yürütülür. Öğe koşul karşılanmazsa koşullu akıştaki işleme adımları atlanır. Koşullu akışlar, API proxy'sinde tanımlanan sırayla değerlendirilir ve koşulu bu yürütülür.

Koşullu akışlar tanımlayarak işleme adımlarını API proxy'sinde uygulayabilme buna göre:

  • İstek URI'si
  • HTTP fiili (GET/PUT/POST/DELETE)
  • Sorgu parametresi, başlık ve form parametresinin değeri
  • Diğer birçok koşul

Örneğin, aşağıdaki koşullu akış, bunun yalnızca isteğin kaynak yolu /accesstoken. /accesstoken yolu, tüm politikalarla birlikte bu akışın yürütülmesine neden olur öğeleri içerir. İstek yolunda sonek yoksa /accesstoken, akış yürütülmez (başka bir koşullu akış olabilir).

<Flows>
  <Flow name="TokenEndpoint">
    <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
    <Request>
      <Step>
        <Name>GenerateAccessToken</Name>
      </Step>
    </Request> 
  </Flow>
</Flows>   

Akış Yapılandırma Öğeleri

Ad Açıklama Varsayılan Zorunlu mu?
Flow ProxyEndpoint tarafından tanımlanan istek veya yanıt işleme ardışık düzeni TargetEndpoint
Name Akışın benzersiz adı. Yok Evet
Condition Bir veya daha fazla değişkeni doğru ya da doğru olarak değerlendiren bir koşullu ifade false (yanlış) değerini alır. Önceden tanımlanmış PreFlow ve PostFlow türleri dışındaki tüm Akışlar bir koşulu olarak karşılanmalıdır. Yok Evet
Request İstek mesajı işlemeyle ilişkili ardışık düzen Yok Hayır
Response Yanıt mesajı işlemeyle ilişkili ardışık düzen Yok Hayır

Adım işleme

Koşullu Akışların sıralı sıralaması Apigee Edge tarafından uygulanır. Koşullu Akışlar yukarıdan aşağıya doğru yürütmektir. Koşulu şu şekilde değerlendirilen ilk koşullu Akış: true yürütülür ve yalnızca bir koşullu Akış yürütülür.

Örneğin aşağıdaki Akış yapılandırmasında, yol son eki, /first veya /second, ThirdFlow yerine Return404 adlı politikayı zorunlu kılıyor.

<Flows>
  <Flow name="FirstFlow">
    <Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="SecondFlow">
    <Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
      <Step><Name>SecondPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="ThirdFlow">
    <Request>
      <Step><Name>Return404</Name></Step>
    </Request>
  </Flow>
</Flows>

Kaynaklar

"Resources" (Kaynaklar) (API proxy'lerinde kullanılacak kaynak dosyaları) komut dosyaları, kod ve XSL dönüşümleridir akışlara eklenebilecek standart veya Bunlar "Komut Dosyaları" bölümünde proxy düzenleyiciyi kullanabilirsiniz.

Desteklenen dosyalar için Kaynak dosyalar bölümüne bakın kaynak türleri.

Kaynaklar bir API proxy'sinde, ortamda veya kuruluşta depolanabilir. Her durumda, bir bir politikadaki adla referansta bulunuluyor. API Hizmetleri, API'den geçiş yaparak adı çözer ortama ve kuruluş düzeyine göre değişiyor.

Kuruluş düzeyinde depolanan bir kaynağa herhangi bir ortamda Politikalar tarafından referans verilebilir. Ortam düzeyinde depolanan bir kaynağa söz konusu ortamdaki politikalar tarafından referans verilebilir. CEVAP API proxy düzeyinde depolanan kaynağa yalnızca söz konusu API proxy'sindeki Politikalar tarafından referans verilebilir.