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

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

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

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

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

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

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

پروژه را دانلود کنید

برای ساده‌تر کردن کار، می‌توانید این پروژه را از مخزن Api-platform-samples Apigee در GitHub دانلود کنید.

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

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

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

  1. مطمئن شوید که Maven را نصب کرده اید:
    mvn -version
    
  2. اسکریپت java-cookbook/buildsetup.sh اجرا کنید. این اسکریپت وابستگی های JAR مورد نیاز را در مخزن Maven محلی شما نصب می کند.
  3. سی دی به دایرکتوری 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. سی دی به api-platform-samples/doc-samples/java-cookbook .
  2. مطمئن باشید که جاواک در مسیر خود دارید.

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

    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. سی دی به 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 را اجرا کنید:
    ./deploy.sh
    
  5. اگر استقرار با موفقیت انجام شد، اسکریپت فراخوانی را اجرا کنید:
    ./invoke.sh
    

    اسکریپت فراخوانی یک دستور 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

در مورد کد جاوا

خط مشی Java Callout کد جاوا زیر را اجرا می کند که سرصفحه پاسخ و بدنه پاسخ را به حروف بزرگ تبدیل می کند. توجه داشته باشید که این برنامه از بسته های مخصوص 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;
        }
    }
}

نمونه پروکسی را بررسی کنید

باز کردن پروکسی و بررسی فایل ها را به شما واگذار می کنیم. در اینجا خط مشی جاوا Callout آمده است. توجه داشته باشید که چگونه به کلاسی که callout اجرا می کند و فایل JAR ارجاع می دهد. تمام خط مشی های Java Callout از این الگو پیروی می کنند. همچنین به سیاست Java Callout مراجعه کنید.

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