تحويل الرد إلى أحرف كبيرة باستخدام وسيلة شرح بلغة Java

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

إذا كنت تجرّب وسيلة شرح بلغة Java للمرة الأولى، ننصحك بالبدء بالاطّلاع على كيفية إنشاء وسيلة شرح بلغة Java.

يوضّح نموذج كتاب الطبخ هذا كيفية إنشاء سياسة JavaCallout بسيطة لتنفيذ رمز JavaScript مخصّص ضمن سياق تدفّق الخادم الوكيل.

ماذا يفعل نموذج التعليمة البرمجية؟

يستدعي الخادم الوكيل لواجهة برمجة التطبيقات في هذا النموذج خدمة مستهدفة تعرض استجابة JSON بسيطة. يتم وضع سياسة وسائل الشرح بلغة Java في مسار الاستجابة المستهدَف. يحوِّل رمز Java عناوين الرد ومحتواه إلى أحرف كبيرة. وهو مثال بسيط مع أنّه يوضّح كيفية تشغيل رمز Java مخصّص في سياق خادم وكيل لواجهة برمجة التطبيقات على Edge.

تجربة النموذج

تنزيل المشروع

لتبسيط الأمور، يمكنك تنزيل هذا المشروع من مستودع api-platform-samples Apigee على 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: اسم المستخدم (عنوان البريد الإلكتروني المرتبط بحسابك) واسم مؤسستك والنطاق الذي تستخدمه لإجراء طلبات إدارة واجهة برمجة التطبيقات. على سبيل المثال، بالنسبة إلى سحابة Edge، يكون النطاق هو https://api.enterprise.apigee.com، ولكن قد يكون نطاقك مختلفًا إذا كنت تستخدم Edge Private Cloud.
  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 التالي، الذي يحوِّل عناوين الاستجابة ونص الاستجابة إلى أحرف كبيرة. لاحظ أن البرنامج يستخدم حزم خاصة بـ 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>