Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Jika Anda mencoba info Java untuk pertama kalinya, sebaiknya mulai dengan Cara membuat Java info.
Contoh buku resep ini menunjukkan cara membuat kebijakan Javacallout sederhana yang dijalankan kode Java khusus dalam konteks alur proxy.
Apa fungsi kode contoh?
Proxy API dalam contoh ini memanggil layanan target yang menampilkan respons JSON sederhana. Tujuan Kebijakan Pemanggilan Java ditempatkan pada alur respons target. Kode Java mengonversi {i>header<i} dan isi respons terhadap huruf besar. Ini adalah contoh sederhana; Namun, cara ini menggambarkan bagaimana agar kode Java khusus 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.
- Download atau clone api-platform-samples ke sistem Anda.
- Di editor kode atau terminal pilihan Anda, buka
Project
api-platform-samples/doc-samples/java-cookbook
.
Kompilasi kode Anda dengan Maven
Project disiapkan agar Anda dapat mengompilasi dengan Maven. Jika Anda ingin menggunakan
javac
, kita akan menyertakan contoh serta mengikuti contoh Maven.
- Pastikan Anda telah menginstal Maven:
mvn -version
- Jalankan skrip
java-cookbook/buildsetup.sh
. Skrip ini menginstal dependensi JAR yang diperlukan dalam repo Maven lokal Anda. - ke direktori
java-cookbool/callout
. - Jalankan Maven:
mvn clean package
- Jika Anda mau, verifikasi bahwa file JAR
edge-custom-policy-java-cookbook.jar
telah disalin kejava-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
mengikuti (dari direktori java-cookbook
). File JAR yang diperlukan disediakan
untuk Anda dalam direktori java-cookbook/lib
.
- cd ke
api-platform-samples/doc-samples/java-cookbook
. - Pastikan Anda memiliki javac di jalur Anda.
javac -version
- 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
- 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 deploy disediakan di direktori ./java-cookbook
. Tapi sebelum
Anda menjalankan
Anda perlu melakukan
pengaturan cepat.
- cd ke
api-platform-samples/doc-samples/java-cookbook
- Jika Anda belum melakukannya, buka file
../../setup/setenv.sh
dan edit seperti yang ditunjukkan dengan informasi akun Apigee Anda: nama pengguna Anda (alamat email yang dikaitkan dengan akun Anda), nama organisasi, dan domain yang digunakan untuk membuat API manajemen proyek. Misalnya, untuk cloud Edge, domainnya adalahhttps://api.enterprise.apigee.com
; Namun, domain Anda mungkin berbeda jika Anda menggunakan Edge Private Cloud. - Simpan file
setenv.sh
. - Jalankan skrip deploy:
./deploy.sh
- 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 screenshot alat rekaman aktivitas yang menunjukkan alur proxy:
Struktur {i>proxy<i}
Ini adalah struktur proxy. Perhatikan bahwa ini menyertakan file JAR di bagian
Direktori apiproxy/resources/java
. JAR wajib diisi. Kami menyediakannya untuk
Namun, jika membuat pekerjaan khusus, Anda harus membuatnya sendiri dan menyalinnya
lokasi HTTP/HTTPS. Untuk panduan tentang mengompilasi dan men-deploy info Java, lihat Cara membuat Java
info.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
Tentang kode Java
Kebijakan Java Keterangan menjalankan kode Java berikut, yang mengonversi header respons dan isi respons ke huruf besar. Perlu diperhatikan bahwa program ini menggunakan paket khusus Apigee. Paket-paket ini menyediakan objek dan metode yang dapat Anda gunakan untuk berinteraksi langsung dengan alur proxy. Metode ada yang memungkinkan Anda mendapatkan dan mengatur variabel alur, header, isi 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 proxy contoh
Kami menyerahkannya kepada Anda untuk membuka {i>proxy<i} dan memeriksa file. Berikut adalah kebijakan Panggilan Java. Perhatikan bagaimana kode mereferensikan class yang dijalankan info dan file JAR. Semua Info Java kebijakan mengikuti pola ini. Lihat juga kebijakan Pemanggilan Java.
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>