Java çağrısıyla yanıtı büyük harfe dönüştürme

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

Java ek bilgisini ilk kez deniyorsanız Java açıklama metni nasıl oluşturulur? başlıklı makaleyle başlamanızı öneririz.

Bu tarif defteri örneği, proxy akışı bağlamında özel Java kodu yürüten basit bir JavaCall politikasının nasıl oluşturulacağını gösterir.

Örnek kod ne işe yarar?

Bu örnekteki API proxy'si, basit bir JSON yanıtı döndüren hedef hizmeti çağırır. Java Çağrı politikası, hedef yanıt akışına yerleştirilir. Java kodu, yanıtın üst bilgilerini ve içeriğini büyük harflere dönüştürür. Basit bir örnek olsa da bu videoda Edge'de API proxy'si bağlamında özel Java kodunun nasıl çalıştırılacağı gösterilmektedir.

Örneği deneyin

Projeyi indirme

İşleri kolaylaştırmak için bu projeyi GitHub'daki Apigee api-platform-samples deposundan indirebilirsiniz.

  1. api-platform-samples API'sini sisteminize indirin veya klonlayın.
  2. Seçtiğiniz bir terminal veya kod düzenleyicide api-platform-samples/doc-samples/java-cookbook projesine gidin.

Kodunuzu Maven ile derleyin

Proje, Maven ile derleyebileceğiniz şekilde ayarlanmıştır. javac öğesini kullanmak istiyorsanız Maven örneğine ek olarak bir örnek de ekleyeceğiz.

  1. Maven'in yüklü olduğundan emin olun:
    mvn -version
    
  2. java-cookbook/buildsetup.sh komut dosyasını çalıştırın. Bu komut dosyası, yerel Maven deponuza gerekli JAR bağımlılıklarını yükler.
  3. cd'den java-cookbool/callout dizinine ekleyin.
  4. Maven'i çalıştırın:
    mvn clean package
    
  5. Dilerseniz edge-custom-policy-java-cookbook.jar JAR dosyasının java-cookbook/apiproxy/resources/java konumuna kopyalandığını doğrulayın. Bu, proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.

Javac ile derleme

Kodu derlemek için javac kullanmak istiyorsanız aşağıdakine benzer bir işlem yapabilirsiniz (java-cookbook dizininden). Gerekli JAR dosyaları java-cookbook/lib dizininde sağlanır.

  1. cd'den api-platform-samples/doc-samples/java-cookbook öğesine dokunun.
  2. Yolunuzda javac uzantısı bulunduğundan emin olun.

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

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
    
  4. JAR dosyasını apiproxy/resources/java dizinine kopyalayın. Bu, proxy ile dağıtmak istediğiniz JAR dosyaları için gerekli konumdur.

    cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
    

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

./java-cookbook dizininde bir dağıtım komut dosyası sağlanır. Ancak çalıştırmadan önce hızlı bir kurulum yapmanız gerekir.

  1. cd'den api-platform-samples/doc-samples/java-cookbook konumuna
  2. Henüz yapmadıysanız ../../setup/setenv.sh dosyasını açın ve Apigee hesap bilgilerinizle (kullanıcı adınız (hesabınızla ilişkili e-posta adresi), kuruluş adınız ve API yönetimi çağrıları yapmak için kullandığınız alan) belirtilen şekilde düzenleyin. Örneğin, Edge bulutu için alan https://api.enterprise.apigee.com'dir. Ancak Edge Private Cloud kullanıyorsanız alanınız farklı olabilir.
  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ğırma komut dosyasını çalıştırın:
    ./invoke.sh
    

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

    curl  http://$org-$env.$api_domain/java-cookbook/json
    

Yanıt şuna benzer:

< HTTP/1.1 200 OK
< Date: Tue, 09 May 2017 20:31:08 GMT
< Content-Type: APPLICATION/JSON; CHARSET=UTF-8
< Content-Length: 68
< Connection: keep-alive
< Access-Control-Allow-Origin: *
< ETag: W/"44-RA5ERT/MMLIK54NVBWBSZG"
< X-Powered-By: APIGEE
< Server: Apigee Router
<
* Curl_http_done: called premature == 0
* Connection #0 to host willwitman-test.apigee.net left intact
{"FIRSTNAME":"JOHN","LASTNAME":"DOE","CITY":"SAN JOSE","STATE":"CA"}

Proxy akışı

Bu, proxy akışını gösteren izleme aracının bir çekimidir:

Proxy yapısı

Bu, proxy'nin yapısıdır. Bu dosyanın, apiproxy/resources/java dizininde bir JAR dosyası içerdiğini unutmayın. JAR zorunludur. Örnek için bunu sağlarız. Ancak özel çalışma yapıyorsanız şablonu kendiniz oluşturmanız ve bu konuma kopyalamanız gerekir. Java çağrısını derleme ve dağıtma hakkında yardım için Java çağrısı oluşturma bölümüne bakın.

java-cookbook

    apiproxy
        java-cookbook.xml
    policies
        responseUppercase.xml
    proxies
        default.xml
    resources
        java
            ResponseUppercase.jar
    targets
        default.xml

Java kodu hakkında

Java Çağrı politikası, yanıt başlıklarını ve yanıt gövdesini büyük harfe dönüştüren aşağıdaki Java kodunu çalıştırır. Programın Apigee'ye özel paketleri kullandığını unutmayın. Bu paketler, doğrudan proxy akışıyla etkileşim kurmak için kullanabileceğiniz nesneler ve yöntemler sağlar. Akış değişkenlerini, üstbilgileri, ileti içeriğini ve daha fazlasını almanızı ve ayarlamanızı sağlayan yöntemler vardır.

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;

import java.util.Set; 

public class ResponseUppercase implements Execution{
    public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
        try {
            Set headers = messageContext.getMessage().getHeaderNames();
            for (String header : headers) {
                String h = messageContext.getMessage().getHeader(header).toUpperCase();
                messageContext.getMessage().setHeader(header, h);
            }
            String content = messageContext.getMessage().getContent();
            messageContext.getMessage().setContent(content.toUpperCase());
            return ExecutionResult.SUCCESS;
        } catch (Exception e) {
                return ExecutionResult.ABORT;
        }
    }
}

Örnek proxy'yi inceleyin

Proxy'yi açmanız ve dosyaları incelemeniz için size bırakıyoruz. Java Çağrı Politikası'nı burada bulabilirsiniz. Bu URL'nin, açıklama metninin yürüttüğü sınıfa ve JAR dosyasına nasıl başvuruda bulunduğunu unutmayın. Tüm Java Açıklama Metni politikaları bu kalıbı izler. Java açıklama metni politikasını da inceleyin.

<JavaCallout name="responseUppercase">         
    <ClassName>com.apigeesample.ResponseUppercase</ClassName>         
    <ResourceURL>java://ResponseUppercase.jar</ResourceURL> 
</JavaCallout>