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

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

Java çağrısını ilk kez deniyorsanız, Java çağrısı oluşturma açıklama metni).

Bu tarif defteri örneği, proxy akışı bağlamındaki özel Java kodudur.

Örnek kod ne işe yarar?

Bu örnekteki API proxy'si, basit bir JSON yanıtı döndüren hedef hizmeti çağırır. İlgili içeriği oluşturmak için kullanılan Java Çağrı politikası hedef yanıt akışına yerleştirilir. Java kodu başlıkları dönüştürür ve büyük harfle yazılmış yanıtın içeriği. Basit bir örnek vereyim. ama bu şekilde projenin API proxy'si bağlamında çalışan özel Java kodu almak için Google Analytics 360'a gidin.

Örneği dene

Projeyi indirme

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

  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-cookbook projesi.

Kodunuzu Maven ile derleyin

Proje, Maven ile derleyebileceğiniz şekilde ayarlanmıştır. Raporlarınızda javac, Maven örneğine ek olarak bir örnek de vereceğiz.

  1. Maven'in yüklü olduğundan emin olun:
    mvn -version
    
    .
  2. java-cookbook/buildsetup.sh komut dosyasını yürütün. Bu komut dosyası yerel Maven deponuzda gerekli JAR bağımlılıklarını test edin.
  3. cd'yi java-cookbool/callout dizinine ekleyin.
  4. Maven'i yürütme:
    mvn clean package
    
    .
  5. İsterseniz edge-custom-policy-java-cookbook.jar JAR dosyasının şuydu olduğunu doğrulayın: java-cookbook/apiproxy/resources/java klasörüne kopyalandı. Bu, Proxy ile dağıtmak istediğiniz JAR dosyaları.

Javac ile derle

Kodu derlemek için javac kullanmak isterseniz şuna benzer bir işlem yapabilirsiniz: (java-cookbook dizininden). Gerekli JAR dosyaları sağlanmış sizin için java-cookbook/lib dizininde bulabilirsiniz.

  1. cd'yi api-platform-samples/doc-samples/java-cookbook 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/ResponseUppercase.java
    
  4. JAR dosyasını apiproxy/resources/java dizinine kopyalayın. Bu, gerekli konumdur proxy ile dağıtmak istediğiniz JAR dosyaları içindir.

    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ğlandı. Ama koşmadan önce hızlı bir kurulum yapmanız gerekir.

  1. cd'den api-platform-samples/doc-samples/java-cookbook'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-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. JAR dosyası içerdiğini unutmayın. apiproxy/resources/java dizini. JAR gereklidir. Bu içeriği, örneğidir, ancak özel çalışma yapıyorsanız bunu kendiniz oluşturmanız ve buraya kopyalamanız gerekir. konum. Java çağrısını derleme ve dağıtmayla ilgili yardım için How to create a Java açıklama metni).

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 çevirmeyin. Programın Apigee'ye özel paketleri kullandığını unutmayın. Bu paketler Proxy akışıyla doğrudan etkileşim kurmak için kullanabileceğiniz nesneler ve yöntemler sağlar. Yöntemler akış değişkenleri, başlıklar, ileti içerikleri ve daha fazlasını alıp ayarlamanıza olanak tanıyan araçlar yer alı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 inceleme

Proxy'yi açıp dosyaları incelemeniz size aittir. Java Çağrı Politikası'nı burada bulabilirsiniz. Açıklama metninin yürütüldüğü sınıfa ve JAR dosyasına nasıl referans verdiğine dikkat edin. Tüm Java Çağrıları politikaları da bu kalıbı izler. Ayrıca bkz. Java Çağrı Politikası.

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