با استفاده از فراخوانی جاوا، پاسخ را به حروف بزرگ تبدیل کنید

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

اگر برای اولین بار است که می‌خواهید از فراخوانی جاوا استفاده کنید، توصیه می‌کنیم با نحوه ایجاد یک فراخوانی جاوا شروع کنید.

این نمونه کتاب آشپزی نحوه ایجاد یک سیاست ساده JavaCallout را نشان می‌دهد که کد جاوا سفارشی را در چارچوب یک جریان پروکسی اجرا می‌کند.

کد نمونه چه کاری انجام می‌دهد؟

پروکسی API در این نمونه، یک سرویس هدف را فراخوانی می‌کند که یک پاسخ ساده JSON را برمی‌گرداند. سیاست فراخوانی جاوا (Java Callout) روی جریان پاسخ هدف قرار می‌گیرد. کد جاوا، هدرها و محتوای پاسخ را به حروف بزرگ تبدیل می‌کند. این یک مثال ساده است؛ با این حال، نحوه‌ی کار کد جاوای سفارشی را در چارچوب یک پروکسی API در Edge نشان می‌دهد.

نمونه را امتحان کنید

دانلود پروژه

برای ساده‌تر شدن کار، می‌توانید این پروژه را از مخزن api-platform-samples آپیجی در گیت‌هاب دانلود کنید.

  1. api-platform-samples را دانلود یا روی سیستم خود کپی کنید.
  2. در یک ترمینال یا ویرایشگر کد دلخواه خود، به پروژه api-platform-samples/doc-samples/java-cookbook بروید.

کد خود را با Maven کامپایل کنید

این پروژه طوری تنظیم شده است که بتوانید با Maven کامپایل کنید. اگر می‌خواهید از javac استفاده کنید، یک مثال نیز به همراه مثال Maven اضافه خواهیم کرد.

  1. مطمئن شوید که Maven را نصب کرده‌اید:
    mvn -version
  2. اسکریپت java-cookbook/buildsetup.sh را اجرا کنید. این اسکریپت وابستگی‌های JAR مورد نیاز را در مخزن محلی Maven شما نصب می‌کند.
  3. با استفاده از دستور cd به دایرکتوری java-cookbool/callout .
  4. اجرای Maven:
    mvn clean package
  5. در صورت تمایل، تأیید کنید که فایل JAR edge-custom-policy-java-cookbook.jar در java-cookbook/apiproxy/resources/java کپی شده باشد. این مکان مورد نیاز برای فایل‌های JAR است که می‌خواهید با یک پروکسی مستقر کنید.

کامپایل با جاوا

اگر می‌خواهید از javac برای کامپایل کد استفاده کنید، می‌توانید کاری مشابه زیر انجام دهید (از دایرکتوری java-cookbook ). فایل‌های JAR مورد نیاز در دایرکتوری java-cookbook/lib برای شما فراهم شده‌اند.

  1. با دستور cd به api-platform-samples/doc-samples/java-cookbook .
  2. مطمئن شوید که javac را در مسیر خود دارید.

    javac -version
  3. دستور جاواک زیر را اجرا کنید:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
  4. فایل JAR را در دایرکتوری apiproxy/resources/java کپی کنید. این مکان مورد نیاز برای فایل‌های JAR است که می‌خواهید با یک پروکسی مستقر کنید.

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

پروکسی را مستقر کرده و فراخوانی کنید

یک اسکریپت استقرار در دایرکتوری ./java-cookbook ارائه شده است. اما قبل از اجرای آن، باید یک تنظیم سریع انجام دهید.

  1. cd به api-platform-samples/doc-samples/java-cookbook
  2. اگر قبلاً این کار را نکرده‌اید، فایل ../../setup/setenv.sh را باز کنید و آن را مطابق با اطلاعات حساب Apigee خود ویرایش کنید: نام کاربری (آدرس ایمیل مرتبط با حساب شما)، نام سازمان و دامنه‌ای که برای برقراری تماس‌های مدیریت API استفاده می‌کنید. به عنوان مثال، برای Edge cloud، دامنه https://api.enterprise.apigee.com است؛ با این حال، اگر از Edge Private Cloud استفاده می‌کنید، دامنه شما ممکن است متفاوت باشد.
  3. فایل setenv.sh را ذخیره کنید.
  4. اسکریپت استقرار را اجرا کنید:
    ./deploy.sh
  5. اگر استقرار موفقیت‌آمیز بود، اسکریپت فراخوانی را اجرا کنید:
    ./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>