API ব্যবহার করে API প্রক্সি ডেপ্লয় করা

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

প্রতিটি সংস্থার অনন্য সফটওয়্যার ডেভেলপমেন্ট লাইফসাইকেল (SDLC) থাকে। ব্যাক-এন্ড পরিষেবার জন্য ব্যবহৃত প্রসেসের সাথে API প্রক্সি ডিপ্লয়মেন্ট সিঙ্ক্রোনাইজ ও অ্যালাইন করা প্রায়ই প্রয়োজন হয়।

এই বিষয়ে দেখানো Edge API পদ্ধতিগুলি আপনার সংস্থার SDLC-তে API প্রক্সি ম্যানেজমেন্ট ইন্টিগ্রেট করতে ব্যবহার করা যেতে পারে। এই API-এর একটি সাধারণ ব্যবহার হল স্ক্রিপ্ট বা কোড লেখা যা API প্রক্সি ডেপ্লয় করে অথবা যা একটি এনভায়রনমেন্ট থেকে অন্য এনভায়রনমেন্টে API প্রক্সি মাইগ্রেট করে, এটি একটি বৃহত্তর অটোমেটিক প্রসেসের অংশ যা অন্যান্য অ্যাপ্লিকেশনও ডেপ্লয় বা মাইগ্রেট করে।

Edge API আপনার SDLC (বা অন্য কারও) সম্পর্কে কোনও অনুমান করে না। বরং, এটি অ্যাটমিক ফাংশন প্রকাশ করে যা আপনার ডেভেলপমেন্ট টিম কোঅর্ডিনেট করতে পারে যাতে আপনার API ডেভেলপমেন্ট লাইফসাইকেল অটোমেট ও অপ্টিমাইজ করা যায়।

সম্পূর্ণ তথ্য পেতে, Edge API দেখুন।

Edge API ব্যবহার করতে, আপনাকে অবশ্যই কল করার সময় নিজের পরিচয় যাচাই করতে হবে। আপনি নিম্নলিখিত পদ্ধতিগুলির একটি ব্যবহার করে এটি করতে পারবেন:

  • OAuth2 (শুধুমাত্র পাবলিক ক্লাউড)
  • SAML (পাবলিক ও প্রাইভেট ক্লাউড)
  • সাধারণ অনুমোদন (সাজেস্ট করা হয় না; পাবলিক ও প্রাইভেট ক্লাউড)

এই বিষয় API প্রক্সি ম্যানেজ করার জন্য API-এর সেটের উপর ফোকাস করে।

ভিডিও: API কীভাবে ডেপ্লয় করতে হয় তা জানতে এই ছোট ভিডিওটি দেখুন।

API-এর সাথে ইন্টার‍্যাক্ট করা

নিচে উল্লেখ করা ধাপগুলি অনুসরণ করে আপনি API-এর সাথে সহজে ইন্ট্যার‍্যাক্ট করতে পারবেন।

আপনার প্রতিষ্ঠানে API-এর তালিকা তৈরি করা

আপনার সংস্থার সব API প্রক্সি তালিকাভুক্ত করে শুরু করতে পারেন। (EMAIL:PASSWORD ও ORG_NAME-এর জন্য এন্ট্রি পরিবর্তন করতে ভুলবেন না। নির্দেশাবলীর জন্য, Edge API ব্যবহার করুন।

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis

নমুনা উত্তর:

[ "weatherapi" ]

API পাওয়া

আপনার সংস্থার যেকোনও API প্রক্সিতে GET পদ্ধতি কল করতে পারবেন। এই কলটি API প্রক্সির সব উপলভ্য রিভিশনের একটি তালিকা রিটার্ন করে।

curl -u EMAIL:PASSWORD -H "Accept: application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi

নমুনা উত্তর:

{
  "name" : "weatherapi",
  "revision" : [ "1" ]
}

এই পদ্ধতির মাধ্যমে শুধুমাত্র API প্রক্সির নাম এবং এর সাথে যুক্ত রিভিশন সংক্রান্ত তথ্য রিটার্ন করা হয়, যার একটি সংশ্লিষ্ট নম্বর থাকে। API প্রক্সিতে কনফিগারেশন ফাইলের একটি বান্ডেল থাকে। আপনি যতবার পরিবর্তন করবেন, ততবার আপনার কনফিগারেশনের আপডেট ম্যানেজ করার জন্য রিভিশন একটি হালকা মেকানিজম প্রদান করে। রিভিশনগুলি ক্রমিক সংখ্যায় চিহ্নিত করা হয়, এর ফলে আপনি API প্রক্সির আগের কোনও রিভিশন ডেপ্লয় করে পরিবর্তন ফিরিয়ে আনতে পারেন। এছাড়াও, আপনি কোনও API প্রক্সি প্রোডাকশন এনভায়রনমেন্টে ডেপ্লয় করতে পারবেন, একই সাথে টেস্ট এনভায়রনমেন্টে সেই API প্রক্সির নতুন রিভিশন তৈরি করা চালিয়ে যেতে পারবেন। আপনি রেডি হয়ে গেলে, প্রোডাকশন এনভায়রনমেন্টে API প্রক্সি আগের রিভিশনের তুলনায় টেস্ট এনভায়রনমেন্টে API প্রক্সির উচ্চতর রিভিশন প্রোমোট করতে পারবেন।

এই উদাহরণে, শুধুমাত্র একটি রিভিশন আছে কারণ API প্রক্সিটি এইমাত্র তৈরি করা হয়েছে। API প্রক্সি যখন ইটারেটিভ কনফিগারেশন ও ডিপ্লয়মেন্টের লাইফসাইকেল ধরে এগোয়, তখন রিভিশন নম্বর পূর্ণ সংখ্যায় বৃদ্ধি পায়। ডিপ্লয় করার জন্য সরাসরি API কল ব্যবহার করে, আপনি ঐচ্ছিকভাবে API প্রক্সির রিভিশন নম্বর বাড়াতে পারেন। কখনও কখনও, আপনি সামান্য পরিবর্তন করলে, হয়ত রিভিশন ইনক্রিমেন্ট করতে চান না।

API রিভিশন পাওয়া

API ভার্সন (যেমন, api.company.com/v1) খুব কমই পরিবর্তিত হওয়া উচিত। API ভার্সন ইনক্রিমেন্ট করলে, এটি ডেভেলপারদের কাছে এই ইঙ্গিত দেয় যে API-এর মাধ্যমে এক্সপোজ করা এক্সটার্নাল ইন্টারফেসের সিগনেচারে গুরুত্বপূর্ণ পরিবর্তন হয়েছে।

API প্রক্সি রিভিশন হল API প্রক্সি কনফিগারেশনের সাথে যুক্ত একটি ক্রমবর্ধমান সংখ্যা। API পরিষেবা আপনার কনফিগারেশনের রিভিশন বজায় রাখে যাতে কোনও সমস্যা হলে আপনি কনফিগারেশন আগের অবস্থায় ফিরিয়ে আনতে পারেন। ডিফল্ট হিসেবে, API প্রক্সি ইমপোর্ট করুন API ব্যবহার করে কোনও API প্রক্সি ইমপোর্ট করার সময়, API প্রক্সির রিভিশন অটোমেটিক এক করে বাড়িয়ে দেওয়া হয়। আপনি API প্রক্সির রিভিশন ইনক্রিমেন্ট করতে না চাইলে, API প্রক্সি রিভিশন আপডেট করুন API ব্যবহার করুন। আপনি যদি ডেপ্লয় করার জন্য Maven ব্যবহার করেন, তাহলে Maven প্লাগ-ইন রিডমি-তে বর্ণিত clean বা update বিকল্প ব্যবহার করুন।

যেমন, বিস্তারিত ভিউ পেতে আপনি API প্রক্সি রিভিশন ১-এ GET মেথড কল করতে পারেন।

curl -u EMAIL:PASSWORD -H "Accept:application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1

উত্তরের নমুনা

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1343178905169,
  "createdBy" : "andrew@apigee.com",
  "lastModifiedAt" : 1343178905169,
  "lastModifiedBy" : "andrew@apigee.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

এইসব API প্রক্সি কনফিগারেশন এলিমেন্ট API প্রক্সি কনফিগারেশন রেফারেন্সে বিস্তারিতভাবে ডকুমেন্ট করা আছে।

কোনও এনভায়রনমেন্টে API ডিপ্লয় করা

আপনার API প্রক্সি সঠিকভাবে অনুরোধ গ্রহণ ও ফরওয়ার্ড করার জন্য কনফিগার করা হয়ে গেলে, আপনি এটি এক বা একাধিক এনভায়রনমেন্টে ডেপ্লয় করতে পারবেন। সাধারণত, আপনি test-এ API প্রক্সি নিয়ে কাজ করেন এবং তারপরে, সেটি রেডি হয়ে গেলে, আপনি prod-এ API প্রক্সি রিভিশন প্রোমোট করেন। প্রায়শই, আপনি দেখবেন যে টেস্ট এনভায়রনমেন্টে API প্রক্সি অনেক বেশি বার সংশোধন করা হয়েছে, এর প্রধান কারণ হল প্রোডাকশন এনভায়রনমেন্টে আপনি অনেক কম ইটারেশন করবেন।

কোনও এনভায়রনমেন্টে ডিপ্লয় না করা পর্যন্ত কোনও API প্রক্সি ইনভোক করা যায় না। আপনি প্রোডাকশনে API প্রক্সি রিভিশন ডেপ্লয় করার পরে, এক্সটার্নাল ডেভেলপারদের কাছে prod URL প্রকাশ করতে পারবেন।

কীভাবে এনভায়র্নমেন্ট তালিকাভুক্ত করতে হয়

Apigee Edge-এর প্রতিটি সংস্থার অন্তত দুটি এনভায়র্নমেন্ট থাকে: test ও prod। এই পার্থক্যটি স্বেচ্ছাচারী। বাইরের ডেভেলপারদের জন্য API প্রক্সি খুলে দেওয়ার আগে সেটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করার জন্য আপনাকে একটি জায়গা দেওয়া হল।

প্রতিটি এনভায়রনমেন্ট হল একটি নেটওয়ার্ক অ্যাড্রেস, যা আপনাকে API প্রক্সিগুলির মধ্যে ট্রাফিক আলাদা করতে সাহায্য করে। আপনি যেগুলি নিয়ে কাজ করছেন এবং রানটাইমে অ্যাপের মাধ্যমে অ্যাক্সেস করা হচ্ছে, সেগুলিও এর মধ্যে পড়ে।

এছাড়াও, এনভায়রনমেন্ট ডেটা ও রিসোর্স আলাদা করে দেয়। যেমন, আপনি টেস্ট ও প্রোডাকশন এনভায়রনমেন্টে আলাদা আলাদা ক্যাশে সেট-আপ করতে পারেন, যা শুধুমাত্র সেই এনভায়রনমেন্টে এক্সিকিউট করা API প্রক্সি অ্যাক্সেস করতে পারবে।

কোনও সংস্থায় এনভায়র্নমেন্ট দেখা

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments

নমুনা উত্তর

[ "test", "prod" ]

ডেপ্লয়মেন্ট এক্সপ্লোর করা

ডেপ্লয়মেন্ট হল API প্রক্সির একটি রিভিশন যা কোনও এনভায়রনমেন্টে ডেপ্লয় করা হয়েছে। ডেপ্লয় করা অবস্থায় থাকা API প্রক্সি নেটওয়ার্কের মাধ্যমে অ্যাক্সেস করা যায়। এটি সেই এনভায়রনমেন্টের জন্য <VirtualHost> এলিমেন্টে সংজ্ঞায়িত অ্যাড্রেসে উপলভ্য।

API প্রক্সি ডেপ্লয় করা

API প্রক্সি ডিপ্লয় না করা পর্যন্ত তা ইনভোক করা যায় না। API পরিষেবা RESTful API প্রকাশ করে যা ডিপ্লয়মেন্ট প্রসেসের উপর নিয়ন্ত্রণ প্রদান করে।

কোনও নির্দিষ্ট সময়ে কোনও এনভায়রনমেন্টে API প্রক্সির শুধুমাত্র একটি রিভিশনই ডিপ্লয় করা যায়। তাই, ডেপ্লয় করা রিভিশন আনডেপ্লয় করতে হবে। নতুন বান্ডেল নতুন রিভিশন হিসেবে ডেপ্লয় করা হবে নাকি আগেকার রিভিশনের উপর ওভাররাইট করা হবে তা আপনি নিয়ন্ত্রণ করতে পারবেন।

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

প্রথমে, আগে থেকে থাকা রিভিশন আনডিপ্লয় করুন। আপনি যে API প্রক্সি আনডিপ্লয় করতে চান তার এনভায়রনমেন্টের নাম ও রিভিশন নম্বর নির্দিষ্ট করুন:

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

তারপর নতুন রিভিশন ডেপ্লয় করুন। API প্রক্সির নতুন রিভিশন আগে থেকেই থাকতে হবে:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

নিরবচ্ছিন্ন ডিপ্লয়মেন্ট (ডাউনটাইম নেই)

ডেপ্লয়মেন্টের সময় ডাউনটাইমের সম্ভাবনা কমাতে, ডেপ্লয়মেন্ট পদ্ধতিতে override প্যারামিটার ব্যবহার করুন এবং এটিকে true হিসেবে সেট করুন।

আপনি একটি API প্রক্সির একটি রিভিশনের উপরে অন্য একটি রিভিশন ডেপ্লয় করতে পারবেন না। প্রথমটি অবশ্যই আনডিপ্লয় করা থাকতে হবে। override-এর মান true হিসেবে সেট করার মাধ্যমে আপনি বোঝাতে চান যে API প্রক্সির একটি রিভিশন বর্তমানে ডিপ্লয় করা রিভিশনের উপর ডিপ্লয় করা উচিত। এর ফলে, ডিপ্লয়মেন্ট সিকোয়েন্স উল্টে যায়--নতুন রিভিশন ডিপ্লয় করা হয় এবং ডিপ্লয়মেন্ট সম্পূর্ণ হয়ে গেলে, আগে ডিপ্লয় করা রিভিশন আনডিপ্লয় করা হয়।

নিম্নলিখিত উদাহরণটি ফর্ম প্যারামিটার হিসেবে পাস করে override ভ্যালু সেট করে:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments" \
  -d "override=true" \
  -u EMAIL:PASSWORD

আপনি delay প্যারামিটার সেট করে আরও অপ্টিমাইজ করতে পারবেন। The delay প্যারামিটারটি একটি সময়সীমা নির্দিষ্ট করে, সেকেন্ডে, যার আগে আগের সংশোধন আনডিপ্লয় করা উচিত। এর ফলে, ইন-ফ্লাইট ট্রানজ্যাকশনগুলির মধ্যে একটি নির্দিষ্ট সময়সীমা থাকে যেটির মধ্যে API প্রক্সি সেগুলির ট্রানজ্যাকশন প্রসেস করার আগে সেগুলি সম্পূর্ণ করতে হয়। override=true ও delay প্যারামিটার সেট করা থাকলে কী কী হয় তা নিচে দেওয়া হল:

  • সংশোধন ১ অনুরোধ ম্যানেজ করছে।
  • সমান্তরালভাবে রিভিশন ২ প্রয়োগ করা হচ্ছে।
  • রিভিশন ২ সম্পূর্ণভাবে ডেপ্লয় করা হলে, নতুন ট্রাফিক রিভিশন ২-এ পাঠানো হয়। রিভিশন ১-এ কোনও নতুন ট্রাফিক পাঠানো হয় না।
  • তবে, রিভিশন ১ এখনও পুরনো ট্রানজ্যাকশন প্রসেস করতে পারে। delay প্যারামিটার (যেমন, ১৫ সেকেন্ড) সেট করার মাধ্যমে, আপনি রিভিশন ১-কে আগে থেকে থাকা ট্রানজ্যাকশন প্রসেস করার জন্য ১৫ সেকেন্ড সময় দেন।
  • দেরি হওয়ার ইন্টারভ্যালের পরে, রিভিশন ১ আনডিপ্লয় করা হয়।
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments?delay=15" \
  -d "override=true" \
  -u EMAIL:PASSWORD
কোয়েরি প্যারামিটার বিবরণ
override

ডিফল্ট হল false (সাধারণ ডিপ্লয়মেন্ট আচরণ: আগে থেকে থাকা রিভিশন আনডিপ্লয় করা হয়, তারপরে নতুন রিভিশন ডিপ্লয় করা হয়)।

সাধারণ ডিপ্লয়মেন্ট আচরণ ওভাররাইড করতে এবং নির্বিঘ্নে ডিপ্লয়মেন্ট প্রদান করতে true হিসেবে সেট করুন। নতুন রিভিশনও ডিপ্লয় করা হচ্ছে, তবে আগে থেকে থাকা রিভিশন ডিপ্লয় করা অবস্থাতেই থাকে। নতুন রিভিশন ডেপ্লয় করা হলে, পুরনো রিভিশন আনডেপ্লয় করা হয়। কখন আনডিপ্লয়মেন্ট হবে তা নিয়ন্ত্রণ করতে delay প্যারামিটারের সাথে একযোগে ব্যবহার করুন।

delay

আনডিপ্লয় করার আগে বর্তমান রিভিশনে ট্রানজ্যাকশন প্রসেসিং সম্পূর্ণ করার অনুমতি দিতে—এবং 502 Bad Gateway বা 504 Gateway Timeout errors হওয়ার সম্ভাবনা দূর করতে—এই প্যারামিটারটি আনডিপ্লয়মেন্টে যত সেকেন্ড বিলম্ব করতে চান সেই সংখ্যায় সেট করুন। আপনি যত সেকেন্ড ইচ্ছা সেট করতে পারেন এবং বেশি সেকেন্ড সেট করলে পারফর্ম্যান্সের উপর কোনও প্রভাব পড়ে না। দেরি চলাকালীন, পুরনো রিভিশনে কোনও নতুন ট্রাফিক পাঠানো হয় না।

ডিফল্ট মান হল ০ (শূন্য) সেকেন্ড। override true হিসেবে সেট করা থাকলে এবং delay-এর মান ০ হলে, নতুন রিভিশন ডিপ্লয় করার সাথে সাথেই আগেকার রিভিশন আনডিপ্লয় করা হয়। নেগেটিভ ভ্যালুকে ০ (শূন্য) সেকেন্ড হিসেবে বিবেচনা করা হয়।

delay-এর সাথে override=true ব্যবহার করা হলে, ডেপ্লয়মেন্টের সময় HTTP 5XX উত্তরগুলি বাদ দেওয়া যেতে পারে। এর কারণ হল, দুটি API প্রক্সি রিভিশনই একসাথে ডিপ্লয় করা হবে এবং বিলম্বের পরে পুরনো রিভিশনটি আনডিপ্লয় করা হবে।

API-এর সবকটি ডিপ্লয়মেন্ট দেখুন সংশোধন

কখনও কখনও, API প্রক্সির বর্তমানে ডিপ্লয় করা সব রিভিশনের তালিকা পেতে হয়।

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1/deployments \
  -u EMAIL:PASSWORD
{
  "aPIProxy" : "weatherapi",
  "environment" : [ {
    "configuration" : {
      "basePath" : "",
      "steps" : [ ]
    },
    "name" : "test",
    "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "90096dd1-1019-406b-9f42-fbb80cd01200"
    }, {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "7d6e2eb1-581a-4db0-8045-20d9c3306549"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "1619e2d7-c822-45e0-9f97-63882fb6a805"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "8a5f3d5f-46f8-4e99-b4cc-955875c8a8c8"
    } ],
    "state" : "deployed"
  } ],
  "name" : "1",
  "organization" : "org_name"
}

উপরের উত্তরে Apigee Edge-এর ইন্টার্নাল ইনফ্রাস্ট্রাকচার সম্পর্কিত অনেক প্রপার্টি রয়েছে। আপনি Apigee Edge অন-প্রিমাইজ ব্যবহার না করলে, এইসব সেটিংস পরিবর্তন করতে পারবেন না।

উত্তরে থাকা গুরুত্বপূর্ণ প্রপার্টিগুলি হল organization, environment, aPIProxy, name এবং state। এইসব প্রপার্টির ভ্যালু পর্যালোচনা করে, আপনি কনফার্ম করতে পারবেন যে API প্রক্সির কোনও নির্দিষ্ট রিভিশন কোনও এনভায়রনমেন্টে ডেপ্লয় করা হয়েছে।

টেস্ট এনভায়রনমেন্টে সব ডিপ্লয়মেন্ট দেখুন

এছাড়াও, আপনি নিম্নলিখিত কল ব্যবহার করে নির্দিষ্ট এনভায়রনমেন্টের জন্য ডিপ্লয়মেন্ট স্ট্যাটাস (এর মধ্যে বর্তমানে ডিপ্লয় করা API প্রক্সির রিভিশন নম্বর) রিট্রিভ করতে পারবেন:

curl -u EMAIL:PASSWORD
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments

টেস্ট এনভায়রনমেন্টে ডিপ্লয় করা প্রতিটি API-এর জন্য এটি উপরের মতো একই ফলাফল দেয়

আপনার সংস্থায় সবকটি ডেপ্লয়মেন্ট দেখা

সব এনভায়রনমেন্টে সব API প্রক্সির বর্তমানে ডিপ্লয় করা রিভিশনের তালিকা পেতে, নিচের API পদ্ধতি ব্যবহার করুন:

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \
  -u EMAIL:PASSWORD

এটি সব এনভায়রনমেন্টে ডেপ্লয় করা সব API প্রক্সির জন্য উপরের মতো একই ফলাফল দেয়।

API যেহেতু RESTful, তাই আপনি API প্রক্সি তৈরি করতে, JSON বা XML পে-লোড সহ একই রিসোর্সের বিরুদ্ধে POST পদ্ধতিটি ব্যবহার করতে পারেন।

আপনার API প্রক্সির জন্য একটি প্রোফাইল তৈরি করা হয়। API প্রক্সির ডিফল্ট উপস্থাপনা হল জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (JSON)। নিচে POST অনুরোধের ডিফল্ট JSON উত্তর দেওয়া হল, যা weatherapi নামের একটি API প্রক্সি তৈরি করেছে। প্রোফাইলের প্রতিটি এলিমেন্টের বিবরণ নিচে দেওয়া হল:

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1357172145444,
  "createdBy" : "you@yourcompany.com",
  "displayName" : "weatherapi",
  "lastModifiedAt" : 1357172145444,
  "lastModifiedBy" : "you@yourcompany.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

জেনারেট করা API প্রক্সি প্রোফাইল API প্রক্সির সম্পূর্ণ স্ট্রাকচার দেখায়:

  • APIProxy revision: API পরিষেবার দ্বারা রক্ষণাবেক্ষণ করা API প্রক্সি কনফিগারেশনের ক্রমিক সংখ্যাযুক্ত ইটারেশন
  • APIProxy name: API প্রক্সির অনন্য নাম
  • ConfigurationVersion: API পরিষেবার সেই ভার্সন যার সাথে API প্রক্সি কনফিগারেশন সামঞ্জস্যপূর্ণ
  • CreatedAt: API প্রক্সি তৈরি হওয়ার সময়, UNIX টাইমে ফর্ম্যাট করা হয়
  • CreatedBy: API প্রক্সি তৈরি করেছেন এমন Apigee Edge ব্যবহারকারীর ইমেল আইডি
  • DisplayName: API প্রক্সির জন্য ব্যবহারকারী-বান্ধব নাম
  • LastModifiedAt: API প্রক্সি তৈরি হওয়ার সময়, UNIX টাইমে ফর্ম্যাট করা হয়
  • LastModifiedBy: API প্রক্সি তৈরি করেছেন এমন Apigee Edge ব্যবহারকারীর ইমেল আইডি
  • Policies: এই API প্রক্সিতে যোগ করা হয়েছে এমন নীতির তালিকা
  • ProxyEndpoints: নামযুক্ত ProxyEndpoints-এর তালিকা
  • Resources: এই API প্রক্সিতে এক্সিকিউট করা যায় এমন রিসোর্সের (JavaScript, Python, Java, XSLT) তালিকা
  • TargetServers: লোড ব্যালেন্সিংয়ের উদ্দেশ্যে উন্নত কনফিগারেশনে ব্যবহৃত, নামযুক্ত TargetServers-এর তালিকা (যা ম্যানেজমেন্ট API ব্যবহার করে তৈরি করা যেতে পারে)
  • TargetEndpoints: নামযুক্ত TargetEndpoints-এর তালিকা

মনে রাখবেন, উপরে উল্লিখিত সাধারণ POST পদ্ধতি ব্যবহার করে তৈরি করা API প্রক্সি কনফিগারেশনের অনেক এলিমেন্ট খালি থাকে। API প্রক্সির মূল কম্পোনেন্ট কীভাবে যোগ ও কনফিগার করতে হয় তা আপনি নিম্নলিখিত বিষয় থেকে জানতে পারবেন।

এছাড়াও, আপনি API প্রক্সি কনফিগারেশন রেফারেন্স থেকে এই কনফিগারেশন এলিমেন্ট সম্পর্কে পড়তে পারেন।

API-এর বিরুদ্ধে স্ক্রিপ্টিং

GitHub-এ উপলভ্য স্যাম্পেল API প্রক্সি ব্যবহার করা, Apigee ডিপ্লয় টুল র‍্যাপ করে এমন শেল স্ক্রিপ্ট প্রদান করে। কোনও কারণে আপনি Python ডেপ্লয় টুল ব্যবহার করতে না পারলে, সরাসরি API কল করতে পারবেন। নিচে দেওয়া নমুনা স্ক্রিপ্টে দুটি পদ্ধতিই দেখানো হয়েছে।

ডেপ্লয় টুল র‍্যাপিং করা

প্রথমে, আপনার লোকাল এনভায়রনমেন্টে Python ডেপ্লয় টুল উপলভ্য আছে কিনা ভালো করে দেখে নিন।

তারপরে, আপনার ক্রেডেনশিয়াল রাখার জন্য একটি ফাইল তৈরি করুন। আপনার লেখা ডিপ্লয়মেন্ট স্ক্রিপ্ট এইসব সেটিংস ইমপোর্ট করবে, এর ফলে আপনি নিজের অ্যাকাউন্টের ক্রেডেনশিয়াল সেন্ট্রালি ম্যানেজ করতে পারবেন। API প্ল্যাটফর্ম স্যাম্পেলে, এই ফাইলের নাম setenv.sh.

#!/bin/bash

org="Your ORG on enterprise.apigee.com"
username="Your USERNAME on enterprise.apigee.com"

# While testing, it's not necessary to change the setting below
env="test"
# Change the value below only if you have an on-premise deployment
url="https://api.enterprise.apigee.com"
# Change the value below only if you have a custom domain
api_domain="apigee.net"

export org=$org
export username=$username
export env=$env
export url=$url
export api_domain=$api_domain

উপরের ফাইলটি আপনার সমস্ত সেটিংসকে শেল স্ক্রিপ্টের জন্য উপলভ্য করে তোলে যা deploy টুলকে র‍্যাপ করে।

এখন এমন একটি শেল স্ক্রিপ্ট তৈরি করুন যা সেইসব সেটিংস ইমপোর্ট করে এবং ডিপ্লয় টুল কল করার জন্য সেগুলি ব্যবহার করে। (যেমন, দেখুন Apigee API প্ল্যাটফর্ম স্যাম্পেল।)

#!/bin/bash

source path/to/setenv.sh

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Deploying $proxy to $env on $url using $username and $org

path/to/deploy.py -n {api_name} -u $username:$password -o $org -h $url -e $env -p / -d path/to/apiproxy

আপনার কাজ আরও সহজ করতে, API-কে ইনভোক ও পরীক্ষা করার জন্য একটি স্ক্রিপ্টও তৈরি করুন, যা নিম্নলিখিত:

#!/bin/bash

echo Using org and environment configured in /setup/setenv.sh

source /path/to/setenv.sh

set -x

curl "http://$org-$env.apigee.net/{api_basepath}"

API সরাসরি ইনভোক করা

সহজ শেল স্ক্রিপ্ট লিখে API প্রক্সি আপলোড ও ডিপ্লয় করার প্রসেস অটোমেটিক করা যেতে পারে। এটি খুবই সহায়ক হতে পারে।

নিচের স্ক্রিপ্ট ম্যানেজমেন্ট API সরাসরি ইনভোক করে। আপনি যে API প্রক্সি আপডেট করছেন, এটি সেটির বর্তমান রিভিশন আনডিপ্লয় করে, আপনার প্রক্সি কনফিগারেশন ফাইল সহ /apiproxy ডিরেক্টরি থেকে একটি ZIP ফাইল তৈরি করে এবং তারপরে কনফিগারেশনটি আপলোড, ইমপোর্ট ও ডিপ্লয় করে।

#!/bin/bash

#This sets the name of the API proxy and the basepath where the API will be available
api=api

source /path/to/setenv.sh

echo Delete the DS_store file on OSX

echo find . -name .DS_Store -print0 | xargs -0 rm -rf
find . -name .DS_Store -print0 | xargs -0 rm -rf

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Undeploy and delete the previous revision

# Note that you need to explicitly update the revision to be undeployed.
# One benefit of the Python deploy tool is that it manages this for you.

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X DELETE

curl -k -u $username:$password -X DELETE "$url/v1/o/$org/apis/$api/revisions/1"

rm -rf $api.zip

echo Create the API proxy bundle and deploy

zip -r $api.zip apiproxy

echo Import the new revision to $env environment 

curl -k -v -u $username:$password "$url/v1/o/$org/apis?action=import&name=$api" -T $api.zip -H "Content-Type: application/octet-stream" -X POST

echo Deploy the new revision to $env environment 

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X POST