জাভা কলআউট দিয়ে প্রতিক্রিয়াটিকে বড় হাতের অক্ষরে রূপান্তর করুন

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

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

এই কুকবুক নমুনাটি দেখায় কিভাবে একটি সহজ JavaCallout পলিসি তৈরি করতে হয়, যা একটি প্রক্সি ফ্লো-এর প্রেক্ষাপটে কাস্টম জাভা কোড এক্সিকিউট করে।

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

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

নমুনাটি চেষ্টা করে দেখুন

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

বিষয়টি সহজ করার জন্য, আপনি গিটহাবে থাকা 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 ডিরেক্টরিতে যান।
  4. Maven চালান:
    mvn clean package
  5. আপনি চাইলে, 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"}

প্রক্সি প্রবাহ

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

প্রক্সি কাঠামো

এটি হলো প্রক্সির কাঠামো। লক্ষ্য করুন যে, এতে apiproxy/resources/java ডিরেক্টরিতে একটি JAR ফাইল অন্তর্ভুক্ত রয়েছে। JAR ফাইলটি আবশ্যক। আমরা স্যাম্পলের জন্য এটি সরবরাহ করি, কিন্তু আপনি যদি নিজস্ব কোনো কাজ করেন, তবে আপনাকে এটি নিজে বিল্ড করে এই লোকেশনে কপি করতে হবে। একটি জাভা কলআউট কম্পাইল এবং ডিপ্লয় করার নির্দেশনার জন্য, “How to create a Java callout” দেখুন।

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>