Konversi respons menjadi huruf besar dengan info Java

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Jika Anda mencoba info Java untuk pertama kalinya, sebaiknya mulai dengan Cara membuat info Java.

Contoh Cookbook ini menunjukkan cara membuat kebijakan JavaCallout sederhana yang mengeksekusi kode Java kustom dalam konteks alur proxy.

Apa fungsi kode contoh?

Proxy API dalam contoh ini memanggil layanan target yang menampilkan respons JSON sederhana. Kebijakan Pemanggilan Java ditempatkan pada alur respons target. Kode Java mengonversi header dan konten respons menjadi huruf besar. Ini adalah contoh sederhana; namun, ini menggambarkan cara mendapatkan kode Java kustom yang berfungsi dalam konteks proxy API di Edge.

Coba sampel

Mendownload project

Untuk mempermudah, Anda dapat mendownload project ini dari repositori api-platform-samples Apigee di GitHub.

  1. Download atau clone api-platform-samples ke sistem Anda.
  2. Di terminal atau editor kode pilihan Anda, buka project api-platform-samples/doc-samples/java-cookbook.

Mengompilasi kode dengan Maven

Project sudah disiapkan agar Anda dapat mengompilasi dengan Maven. Jika Anda ingin menggunakan javac, kami akan menyertakan contoh serta mengikuti contoh Maven.

  1. Pastikan Anda telah menginstal Maven:
    mvn -version
    
  2. Jalankan skrip java-cookbook/buildsetup.sh. Skrip ini akan menginstal dependensi JAR yang diperlukan dalam repo Maven lokal Anda.
  3. {i>cd<i} ke direktori java-cookbool/callout.
  4. Jalankan Maven:
    mvn clean package
    
  5. Jika mau, pastikan bahwa file JAR edge-custom-policy-java-cookbook.jar telah disalin ke java-cookbook/apiproxy/resources/java. Ini adalah lokasi yang diperlukan untuk file JAR yang ingin Anda deploy dengan proxy.

Mengompilasi dengan javac

Jika ingin menggunakan javac untuk mengompilasi kode, Anda dapat melakukan sesuatu yang mirip dengan berikut ini (dari direktori java-cookbook). File JAR yang diperlukan disediakan untuk Anda di direktori java-cookbook/lib.

  1. {i>cd<i} ke api-platform-samples/doc-samples/java-cookbook.
  2. Pastikan Anda memiliki javac di jalur Anda.

    javac -version
    
  3. Jalankan perintah javac berikut:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
    
  4. Salin file JAR ke direktori apiproxy/resources/java. Ini adalah lokasi yang diperlukan untuk file JAR yang ingin Anda deploy dengan proxy.

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

Men-deploy dan memanggil proxy

Skrip deployment disediakan di direktori ./java-cookbook. Namun, sebelum menjalankannya, Anda perlu melakukan penyiapan cepat.

  1. cd ke api-platform-samples/doc-samples/java-cookbook
  2. Jika Anda belum melakukannya, buka file ../../setup/setenv.sh dan edit file tersebut seperti yang ditunjukkan dengan informasi akun Apigee Anda: nama pengguna (alamat email yang terkait dengan akun Anda), nama organisasi, dan domain yang Anda gunakan untuk melakukan panggilan pengelolaan API. Misalnya, untuk Edge cloud, domainnya adalah https://api.enterprise.apigee.com; namun, domain Anda mungkin berbeda jika Anda menggunakan Edge Private Cloud.
  3. Simpan file setenv.sh.
  4. Jalankan skrip deployment:
    ./deploy.sh
    
  5. Jika deployment berhasil, jalankan skrip pemanggilan:
    ./invoke.sh
    

    Skrip pemanggilan memanggil perintah cURL yang terlihat seperti ini:

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

Responsnya akan terlihat seperti ini:

< 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"}

Alur proxy

Ini adalah foto alat pelacakan yang menunjukkan alur proxy:

Struktur proxy

Ini adalah struktur proxy. Perhatikan bahwa file ini menyertakan file JAR dalam direktori apiproxy/resources/java. JAR wajib diisi. Kami menyediakannya sebagai contoh, tetapi jika mengerjakan pekerjaan kustom, Anda harus membuatnya sendiri dan menyalinnya ke lokasi ini. Untuk panduan mengompilasi dan men-deploy info Java, lihat Cara membuat info Java.

java-cookbook

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

Tentang kode Java

Kebijakan Pemanggilan Java menjalankan kode Java berikut, yang mengubah header respons dan isi respons menjadi huruf besar. Perhatikan bahwa program ini menggunakan paket khusus Apigee. Paket-paket ini menyediakan objek dan metode yang dapat digunakan untuk berinteraksi langsung dengan alur proxy. Terdapat metode yang memungkinkan Anda mendapatkan dan menetapkan variabel flow, header, konten pesan, dan lainnya.

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;
        }
    }
}

Memeriksa contoh proxy

Kami menyerahkannya kepada Anda untuk membuka {i>proxy<i} dan memeriksa filenya. Berikut adalah kebijakan Pemanggilan Java. Perhatikan caranya mereferensikan class yang dijalankan info dan file JAR. Semua kebijakan Pemanggilan Java mengikuti pola ini. Lihat juga Kebijakan pemanggilan Java.

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