Java কলআউটের মাধ্যমে উত্তরটি বড় হাতের অক্ষরে পরিবর্তন করুন

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

আপনি যদি প্রথমবার Java কলআউট ব্যবহার করে থাকেন, তাহলে আমরা সাজেস্ট করি যে Java কলআউট কীভাবে তৈরি করতে হয় নিবন্ধটি দিয়ে শুরু করুন।

এই কুকবুক স্যাম্পেল দেখায় যে কীভাবে একটি সাধারণ JavaCallout নীতি তৈরি করতে হয় যা প্রক্সি ফ্লোর কনটেক্সটে কাস্টম Java কোড এক্সিকিউট করে।

নমুনা কোড কী করে?

এই স্যাম্পেলের API প্রক্সি একটি টার্গেট পরিষেবাকে কল করে যা একটি সাধারণ JSON উত্তর দেয়। টার্গেট রেসপন্স ফ্লোতে Java কলআউট নীতি প্রয়োগ করা হয়। Java কোডটি উত্তরের হেডার ও কন্টেন্টকে বড় হাতের অক্ষরে পরিবর্তন করে। এটি একটি সাধারণ উদাহরণ; তবে, এটি দেখায় যে কীভাবে Edge-এ API প্রক্সির প্রসঙ্গে কাস্টম জাভা কোড কাজ করাতে হয়।

নমুনা ব্যবহার করে দেখুন

প্রোজেক্ট ডাউনলোড করুন

বিষয়টি সহজ করতে, আপনি GitHub-এ Apigee 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 এক্সিকিউট করুন। এই স্ক্রিপ্ট আপনার লোকাল Maven রেপোতে প্রয়োজনীয় JAR ডিপেন্ডেন্সি ইনস্টল করে।
  3. java-cookbool/callout ডিরেক্টরিতে cd করুন।
  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-এ cd করুন।
  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. apiproxy/resources/java ডিরেক্টরিতে JAR ফাইল কপি করুন। প্রক্সি সহ ডিপ্লয় করতে চাওয়া JAR ফাইলের জন্য এই লোকেশনটি প্রয়োজন।

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

প্রক্সি ডিপ্লয় ও কল করা

./java-cookbook ডিরেক্টরিতে একটি ডিপ্লয় স্ক্রিপ্ট প্রদান করা হয়েছে। তবে এটি রান করানোর আগে, আপনাকে দ্রুত সেট-আপ করতে হবে।

  1. api-platform-samples/doc-samples/java-cookbook-এ cd করুন
  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"}

প্রক্সি ফ্লো

এটি হল ট্রেস টুলের একটি শট যা প্রক্সি ফ্লো দেখাচ্ছে:

প্রক্সি স্ট্রাকচার

এটি হল প্রক্সির স্ট্রাকচার। মনে রাখবেন, এতে apiproxy/resources/java ডিরেক্টরিতে একটি JAR ফাইল থাকে। 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>