شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
اگر برای اولین بار است که میخواهید از فراخوانی جاوا استفاده کنید، توصیه میکنیم با نحوه ایجاد یک فراخوانی جاوا شروع کنید.
این نمونه کتاب آشپزی نحوه ایجاد یک سیاست ساده JavaCallout را نشان میدهد که کد جاوا سفارشی را در چارچوب یک جریان پروکسی اجرا میکند.
کد نمونه چه کاری انجام میدهد؟
پروکسی API در این نمونه، یک سرویس هدف را فراخوانی میکند که یک پاسخ ساده JSON را برمیگرداند. سیاست فراخوانی جاوا (Java Callout) روی جریان پاسخ هدف قرار میگیرد. کد جاوا، هدرها و محتوای پاسخ را به حروف بزرگ تبدیل میکند. این یک مثال ساده است؛ با این حال، نحوهی کار کد جاوای سفارشی را در چارچوب یک پروکسی API در Edge نشان میدهد.
نمونه را امتحان کنید
دانلود پروژه
برای سادهتر شدن کار، میتوانید این پروژه را از مخزن api-platform-samples آپیجی در گیتهاب دانلود کنید.
- api-platform-samples را دانلود یا روی سیستم خود کپی کنید.
- در یک ترمینال یا ویرایشگر کد دلخواه خود، به پروژه
api-platform-samples/doc-samples/java-cookbookبروید.
کد خود را با Maven کامپایل کنید
این پروژه طوری تنظیم شده است که بتوانید با Maven کامپایل کنید. اگر میخواهید از javac استفاده کنید، یک مثال نیز به همراه مثال Maven اضافه خواهیم کرد.
- مطمئن شوید که Maven را نصب کردهاید:
mvn -version
- اسکریپت
java-cookbook/buildsetup.shرا اجرا کنید. این اسکریپت وابستگیهای JAR مورد نیاز را در مخزن محلی Maven شما نصب میکند. - با استفاده از دستور cd به دایرکتوری
java-cookbool/callout. - اجرای Maven:
mvn clean package
- در صورت تمایل، تأیید کنید که فایل JAR
edge-custom-policy-java-cookbook.jarدرjava-cookbook/apiproxy/resources/javaکپی شده باشد. این مکان مورد نیاز برای فایلهای JAR است که میخواهید با یک پروکسی مستقر کنید.
کامپایل با جاوا
اگر میخواهید از javac برای کامپایل کد استفاده کنید، میتوانید کاری مشابه زیر انجام دهید (از دایرکتوری java-cookbook ). فایلهای JAR مورد نیاز در دایرکتوری java-cookbook/lib برای شما فراهم شدهاند.
- با دستور cd به
api-platform-samples/doc-samples/java-cookbook. - مطمئن شوید که javac را در مسیر خود دارید.
javac -version
- دستور جاواک زیر را اجرا کنید:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
- فایل JAR را در دایرکتوری apiproxy/resources/java کپی کنید. این مکان مورد نیاز برای فایلهای JAR است که میخواهید با یک پروکسی مستقر کنید.
cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
پروکسی را مستقر کرده و فراخوانی کنید
یک اسکریپت استقرار در دایرکتوری ./java-cookbook ارائه شده است. اما قبل از اجرای آن، باید یک تنظیم سریع انجام دهید.
- cd به
api-platform-samples/doc-samples/java-cookbook - اگر قبلاً این کار را نکردهاید، فایل
../../setup/setenv.shرا باز کنید و آن را مطابق با اطلاعات حساب Apigee خود ویرایش کنید: نام کاربری (آدرس ایمیل مرتبط با حساب شما)، نام سازمان و دامنهای که برای برقراری تماسهای مدیریت API استفاده میکنید. به عنوان مثال، برای Edge cloud، دامنهhttps://api.enterprise.apigee.comاست؛ با این حال، اگر از Edge Private Cloud استفاده میکنید، دامنه شما ممکن است متفاوت باشد. - فایل
setenv.shرا ذخیره کنید. - اسکریپت استقرار را اجرا کنید:
./deploy.sh
- اگر استقرار موفقیتآمیز بود، اسکریپت فراخوانی را اجرا کنید:
./invoke.sh
اسکریپت invoke یک دستور cURL را فراخوانی میکند که به صورت زیر است:
curl http://$org-$env.$api_domain/java-cookbook/json
پاسخ چیزی شبیه به این است:
< 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"}
جریان پروکسی
این تصویری از ابزار ردیابی است که جریان پروکسی را نشان میدهد:

ساختار پروکسی
این ساختار پروکسی است. توجه داشته باشید که شامل یک فایل JAR در دایرکتوری apiproxy/resources/java . فایل JAR مورد نیاز است. ما آن را برای نمونه ارائه میدهیم، اما اگر کار سفارشی انجام میدهید، باید خودتان آن را بسازید و در این مکان کپی کنید. برای راهنمایی در مورد کامپایل و استقرار یک فراخوانی جاوا، به نحوه ایجاد یک فراخوانی جاوا مراجعه کنید.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
درباره کد جاوا
سیاست فراخوانی جاوا، کد جاوای زیر را اجرا میکند که هدرهای پاسخ و بدنه پاسخ را به حروف بزرگ تبدیل میکند. توجه داشته باشید که این برنامه از بستههای مخصوص Apigee استفاده میکند. این بستهها اشیاء و روشهایی را ارائه میدهند که میتوانید برای تعامل مستقیم با جریان پروکسی از آنها استفاده کنید. روشهایی وجود دارند که به شما امکان میدهند متغیرهای جریان، هدرها، محتوای پیام و موارد دیگر را دریافت و تنظیم کنید.
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; } } }
پروکسی نمونه را بررسی کنید
باز کردن پروکسی و بررسی فایلها را به شما واگذار میکنیم. در اینجا سیاست فراخوانی جاوا آمده است. توجه کنید که چگونه به کلاسی که فراخوانی اجرا میکند و فایل JAR ارجاع میدهد. همه سیاستهای فراخوانی جاوا از این الگو پیروی میکنند. همچنین به سیاست فراخوانی جاوا مراجعه کنید.
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>