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

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

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

این نمونه دستورالعمل نشان می‌دهد که چگونه یک خط‌مشی JavaCallout ساده ایجاد کنید که کد سفارشی Java را در زمینه جریان پراکسی اجرا می‌کند.

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

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

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

بارگیری پروژه

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

  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. به فهرست راهنمای java-cookbool/callout بروید.
  4. اجرای Maven:
    mvn clean package
  5. درصورت تمایل، تأیید کنید که فایل JAR edge-custom-policy-java-cookbook.jar به java-cookbook/apiproxy/resources/java کپی شده است. این مکان موردنیاز برای فایل‌های JAR است که می‌خواهید با پراکسی مستقر کنید.

ترجمه کردن با javac

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

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

    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، دامنه https://api.enterprise.apigee.com است؛ بااین‌حال، اگر از «ابر خصوصی Edge» استفاده می‌کنید، دامنه شما ممکن است متفاوت باشد.
  3. فایل setenv.sh را ذخیره کنید.
  4. اجرای دستورگان استقرار:
    ./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، به نحوه ایجاد پیام‌واره Java مراجعه کنید.

java-cookbook

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

درباره کد Java

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

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

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

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