Java çağrısı oluşturma

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

Java çağrısı nedir?

Apigee Edge, aşağıdakiler gibi yaygın API yönetimi gereksinimlerini ele alan bir dizi politika sunar: gibi pek çok alanda uzmandır.

Ancak, API'nizin uygulanmayan özel davranış gerektirdiği bazı durumlar da vardır standart bir politika içinde. Bu durumlarda Apigee, komut dosyası oluşturmanıza olanak tanıyan çeşitli seçenekler sunar. veya özelleştirilmiş API davranışını kodlayın. Yaklaşımlardan biri, Java'da istenen davranışı uygulamaktır.

Java'nın desteklenen sürümleri için Desteklenenler bölümüne bakın yazılım ve desteklenen sürümler hakkında daha fazla bilgi edinin.

Proxy'de Java kodunu nasıl kullanabilirim?

Java çağrı politikası, Java kodunu yürütme proxy akışı içinden çağırmanıza olanak tanır. Java'nız kodun, kodun etkileşime geçmesine izin veren belirli Edge'e özgü Java arayüzlerini uygulaması gerekir proxy ile çalışır. Örneğin, üstbilgileri, sorguyu almak ve ayarlamak parametreleri, akış değişkenleri ve proxy'nin geçerli akış bağlamında yer alan diğer varlıklar.

Ne zaman Java çağrısı kullanmalıyım?

Şimdi Java çağrılarının kullanışlı olduğu ve bunun için başka yaklaşımları da göz önünde bulundurun.

Öncelikle, alternatif yaklaşımlar

Java çağrısı kullanmadan önce, kullanabileceğiniz alternatif yaklaşımların olabileceğini unutmayın . Örneğin:

  • Uzak hizmetlere HTTP API çağrıları gibi basit işlemler için Hizmet Çağrısı politikası. Hizmet Açıklama Metni Politikası'nı inceleyin.
  • İleti içeriğiyle ilgili değiştirme veya çıkarma gibi nispeten basit etkileşimler için HTTP üstbilgileri, parametreleri veya mesaj içeriği için JavaScript ya da Python dillerini kullanabilirsiniz.

Java koduyla neler yapabilirsiniz?

Java çağrısı şu temel işlemleri destekler:

  • İstek veya yanıt mesajlarını inceleme ya da değiştirme
  • Akış değişkenlerini alma ve ayarlama. Edge akış değişkenlerine erişmek için Java yöntemlerini kullanabilirsiniz. Anahtar/Değer Eşleme (KVM) bilgilerine erişmek istiyorsanız bir KVM politikası kullanın. KVM değerlerini akış değişkenlerine atadıktan sonra akış değişkenlerine eklemeyi unutmayın.
  • Harici hizmetler aranıyor
  • Hataları yükseltme
  • Hata mesajlarını ve durum kodlarını değiştirme

Java'da yapamayacağınız işlemler kod

Çoğu sistem çağrısına izin verilmez. Aşağıdakileri yapamazsınız:

  • Dahili dosya sisteminin okuma veya yazma işlemleri yapmasını sağlayın. Bu, burada yer alan hiçbir Dahili dosya sistemlerinde okuma/yazma işlemleri için Java paketleri; ancak dış kaynaklarla da uzaktan arama yapabilirsiniz.
  • Cihazınızda geçerli işlem, işlem listesi veya CPU/bellek kullanımı hakkında bilgi alın yardımcı oluyorum.
  • "expressions-1.0.0.jar" ve "message-flow-1.0.0.jar" öğelerinin kaynak koduna erişin.

Bu tür çağrıların bazıları işe yarar ancak desteklenmez ve etkin bir şekilde devre dışı bırakılabilirler. istediğiniz zaman izleyebilirsiniz. Kodunuzda bu tür çağrılar yapmaktan kaçının.

Apigee Edge'e dahil olan Java kitaplıklarını kullanmayın veya bunlara güvenmeyin. Bu kitaplıklar yalnızca Edge ürün işlevleri içindir ve bir kitaplığın kullanılabilir olacağının garantisi yoktur. her şeyi kapsıyor. Bu tür kitaplıkları kullanıyorsanız bunları üretim dışı demolarda kullanın gerekir.

Hello Java açıklama metni

Temel hello World Java açıklama metni örneğindeki adımları inceleyelim. Bu örnekte, "hello world" değerini döndüren Java açıklama metnine sahip basit proxy tıklayın. Proxy, bir değer döndürebilir arasındaki fark:

  • Bir "kullanıcı adı" geçerseniz "ad" içeren başlık değeri için proxy şunu döndürür:

    .
    Hello, <name>!
    
  • Üstbilgiyi çıkarırsanız proxy yalnızca şu sonucu döndürür:

    .
    "Hello, Guest!"
    

Başlangıç projesini indirin

İşinizi kolaylaştırmak amacıyla, Apigee'de GitHub'da sizin için hazırladığımız temel bir projemiz var api-platform-samples deposudur.

  1. api-platform-samples öğesini sisteminize indirin veya klonlayın.
  2. Tercih ettiğiniz bir terminalde veya kod düzenleyicide api-platform-samples/doc-samples/java-hello projesi.

Java kodunu yazma

  1. Java kaynak dosyasını açın: java-hello/callout/src/main/java/HelloJava.java. Bu dosya, uygulayacağımız ana Java sınıfının iskelet bir sürümüdür. İçe aktarılan Edge Java Çağrı kodu için paket gerekir. Bu sınıflar şunları yapmanıza olanak tanıyan yöntemler sunar: kullanılması gerekir. Derleme ve dağıtma adımlarını açıklayacağız. kısa bir süre içinde gönderin.
    package com.apigeesample;
    
    import com.apigee.flow.execution.ExecutionContext;
    import com.apigee.flow.execution.ExecutionResult;
    import com.apigee.flow.execution.spi.Execution;
    import com.apigee.flow.message.MessageContext;
    
    
    public class HelloJava implements Execution {
    
            public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
                    
                    try {
    
                            // Your code here.
                
                return ExecutionResult.SUCCESS;
    
                    } catch (Exception e) {
                            return ExecutionResult.ABORT;
                    }
            }
    
    }
    
  2. Yorum yapılan satırı (// Your code here) şu kodla değiştirin:

    String name = messageContext.getMessage().getHeader("username");
    
    if (name != null && name.length()>0) {
            messageContext.getMessage().setContent("Hello, " + name + "!");
            messageContext.getMessage().removeHeader("username");
    } else {
            messageContext.getMessage().setContent("Hello, Guest!");
    }
    
  3. Dosyayı kaydedin.


. Kodunuzu Maven ile derleyin

Proje, Maven ile derleyebileceğiniz şekilde ayarlanmıştır. Raporlarınızda javac, Maven örneğinin uygulanmasına bir örnek eklenecek.

  1. Maven'in yüklü olduğundan emin olun:

    .
    mvn -version
    
  2. java-hello/buildsetup.sh komut dosyasını yürütün. Bu komut dosyası, gerekli dosyayı JAR bağımlılarını yerel Maven depolarına taşıyın.
  3. cd'yi java-hello/callout dizinine ekleyin.
  4. Maven'i yürüt:

    .
    mvn clean package
    
  5. İsterseniz edge-custom-policy-java-hello.jar JAR dosyasının şuydu olduğunu doğrulayın: java-hello/apiproxy/resources/java klasörüne kopyalandı. Bu, Proxy ile dağıtmak istediğiniz JAR dosyaları.

Javac ile derle (isteğe bağlı)

Önceki bölümde, gerekli Java JAR dosyasını bir Maven komutu. Alternatif olarak, kodu derlemek için javac kullanmak isterseniz şunu da yapabilirsiniz: aşağıdakine benzer bir sonuç (java-hello dizininden). Zorunlu JAR dosyaları sizin için java-hello/lib dizininde sağlanır.

  1. cd'yi api-platform-samples/doc-samples/java-hello konumuna ekleyin.
  2. Yolunuzda javac bulunduğundan emin olun.

    javac -version
    
  3. Aşağıdaki javac komutunu yürütün:

    .
    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/HelloJava.java
    
    Bu, com/apigeesample/HelloJava.class oluşturur.
  4. Derlenmiş sınıfı içeren bir JAR dosyası oluşturun: apiproxy/resources/java dizini. Bu, JAR için gerekli olan konumdur proxy ile dağıtmak istediğiniz dosyaları seçin. Bu işlemi aşağıdaki komutu çalıştırarak yapabilirsiniz: komutuna java-hello ekleyebilirsiniz (sondaki noktayı unutmayın).

    jar cvf apiproxy/resources/java/edge-custom-policy-java-hello.jar -C com .
    

Proxy'yi dağıtma ve çağırma

./java-hello dizininde bir dağıtım komut dosyası sağlandı. Ama çalıştırmadan önce hızlı bir kurulum yapmanız gerekir.

  1. cd'den api-platform-samples/doc-samples/java-hello'ye
  2. Henüz yapmadıysanız ../../setup/setenv.sh dosyasını açın ve düzenleyin Apigee hesap bilgilerinizle birlikte belirtildiği gibi: kullanıcı adınız (e-posta adresi hesabınızla ilişkilendirilen), kuruluşunuzun adı ve API oluşturmak için kullandığınız alan adı yönetim çağrıları. Örneğin, Edge Cloud için alan https://api.enterprise.apigee.com; ancak dilerseniz kullanarak giriş yapın.
  3. setenv.sh dosyasını kaydedin.
  4. Dağıtım komut dosyasını yürütün:

    .
    ./deploy.sh
    
  5. Dağıtım başarılı olursa çağrı komut dosyasını yürütün:

    .
    ./invoke.sh
    

    Çağrı komut dosyası şuna benzer bir cURL komutu çağırır:

    curl  http://$org-$env.$api_domain/java-hello -H "username:Will"
    

    Örneğin, "Hello, Will!

    Adı değiştirmek için invoke.sh komut dosyasını düzenleyebilir veya cURL çağrısıyla üstbilgi kaldırılır, ardından komut "Hello, Guest!" değerini döndürür.

Proxy hakkında

Bu proxy'de kullanılan politikaları hızlıca inceleyelim. Politikaların nerede geçerli olduğuna dikkat edin konumlandırılmayı ve bunun nedenini.

Mesaj atama politikası

ProxyEndpoint istek akışına bir mesaj atama politikası eklenir. Google istekten kullanıcı adı başlığını kopyalar ve bunu yanıta atar. Bu işlem, kullanıcı adı başlığına erişmek için yanıt akışına ekli Java Çağrı Politikası ve bu başlığın değerini kullanarak özel bir yanıt gövdesi oluşturabilirsiniz.

<AssignMessage async="false" continueOnError="false" enabled="true" name="CopyHeader">     
    <DisplayName>CopyHeader</DisplayName>     
    <Copy source="request">         
        <Headers>             
          <Header name="username"/>         
        </Headers>     
    </Copy>     
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>     
    <AssignTo createNew="false" transport="http" type="response"/> 
</AssignMessage>

Java açıklama metni politikası

Java açıklama metni politikası yanıt akışına eklenir. Bunun nedeni, özel Java kodu, yanıt başlıklarında ve mesajda değişiklik yapar. Politikanın ClassName öğesi, politika tarafından yürütülen ana sınıfı belirtir. ResourceURL öğesi oluşturduğunuz ve resources/java dizinine eklediğiniz JAR dosyasının adı temsil eder.

<JavaCallout name="hello-java">         
    <ClassName>com.apigeesample.HelloJava</ClassName>         
    <ResourceURL>java://edge-custom-policy-java-hello.jar</ResourceURL> 
</JavaCallout>

Java açıklama metni hakkında bilmeniz gerekenler

Java çağrısı uygulamayla ilgili dikkat edilmesi gereken önemli noktalar şunlardır:

  • com.apigee.flow.execution ve com.apigee.flow.message paket. Bu paketler JAR dosyasına eklenmelidir paketlenmiş ve dağıtılır. Java JAR'ınızı Yönetim Arayüzü proxy'si üzerinden yükleyebilirsiniz veya API proxy'lerindeki /resources/java dizinine ekleyerek yardımcı olmaktır.
  • Yürütme arayüzünü uygular. API proxy'si içinde yürütülen herhangi bir Java kodu, yürütmeye başlar.
  • Java Çağrı politikası gerçek bir kod içermez. Bunun yerine, Java Çağrı Politikası bir JAR'de paketlemeniz gereken Java "kaynak".
  • Kaçınılması gereken paket adları: io.apigee etiketini kullanmayın veya com.apigee kodunu Java Açıklama Metinlerinde paket adları olarak kullanabilirsiniz. Bunlar, diğer Apigee modüllerini de kullanabilirsiniz.
  • Java Açıklama metniniz bağımsız JAR olarak paketlenmiş ek üçüncü taraf kitaplıklar kullanıyorsa daha sonra bu JAR dosyalarını da /resources/java dizinine yerleştirin. bunların çalışma zamanında doğru şekilde yüklendiğinden emin olun.
  • Birden fazla JAR varsa bunları ek kaynak olarak eklemeniz yeterlidir. Herhangi bir teknik politika yapılandırmasını ek JAR dosyalarına bakacak şekilde değiştirmelidir. İş ilanlarını /resources/java yeterlidir.
  • Java JAR'ları yükleme hakkında daha fazla bilgi için Kaynak dosyaları bölümüne bakın.