خط مشی KeyValueMapOperations

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

نماد عملیات نقشه ارزش کلیدی از رابط کاربری Edge

چه

دسترسی مبتنی بر سیاست به یک مخزن نقشه کلید-مقدار (KVM) موجود در Apigee Edge را فراهم می‌کند. جفت‌های کلید/مقدار را می‌توان با پیکربندی سیاست‌های KeyValueMapOperations که عملیات PUT، GET یا DELETE را مشخص می‌کنند، از نقشه‌های موجود نامگذاری شده ذخیره، بازیابی و حذف کرد. (حداقل یکی از این عملیات‌ها باید توسط این سیاست انجام شود.)

ویدیوها

برای آشنایی بیشتر با KVM ها، ویدیوهای زیر را تماشا کنید.

ویدئو توضیحات
چرا نقشه‌های ارزش کلیدی؟ بیاموزید که چرا به KVM نیاز دارید و چگونه کار می‌کنند.
ایجاد KVM با استفاده از رابط کاربری و بازیابی KVM در زمان اجرا یک KVM ایجاد کنید، مقدار آن را با استفاده از یک سیاست KVM بازیابی کنید و با استفاده از متغیرهای جریان، مقدار را به درخواست API تزریق کنید.
ایجاد و به‌روزرسانی KVM در زمان اجرای API با استفاده از یک سیاست KVM، یک KVM در زمان اجرای API ایجاد کنید.
حافظه پنهان KVM برای افزایش کارایی بهبود عملکرد KVM Policy با ذخیره سازی داده‌ها.
ذخیره KVM رمزگذاری شده اطلاعات حساس را در KVM به صورت رمزگذاری شده ذخیره کنید و با استفاده از سیاست‌های KVM و متغیرهای خصوصی، مقدار را در زمان اجرا بازیابی کنید.
مدیریت دسترسی با استفاده از محدوده KVM با استفاده از ویژگی محدوده سیاست KVM، KVM را به سازمان، محیط، پروکسی API یا بازبینی پروکسی API محدود کنید.
حذف ورودی‌های KVM در زمان اجرای API ورودی‌های KVM را در زمان اجرای API با استفاده از عملیات DELETE در سیاست KVM حذف کنید.

نمونه‌ها

قرار دادن KVM با یک عبارت تحت اللفظی

وقتی سیاست زیر اجرا می‌شود، یک KVM رمزگذاری‌شده به نام FooKVM ایجاد می‌کند، سپس یک کلید به نام FooKey_1 با دو مقدار تنظیم‌شده با رشته‌های تحت‌اللفظی foo و bar (نه با مقادیر استخراج‌شده از متغیرها) ایجاد می‌کند. وقتی در مثال بعدی کلید را GET ، یک شماره اندیس برای بازیابی مقدار مورد نظر خود مشخص می‌کنید.

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="FooKVM" mapIdentifier="FooKVM">
  <DisplayName>FooKVM</DisplayName>
  <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
  <Scope>environment</Scope>
  <Put>
    <Key>
      <Parameter>FooKey_1</Parameter>
    </Key>
    <Value>foo</Value>
    <Value>bar</Value>
  </Put>
</KeyValueMapOperations>

توجه داشته باشید که محدوده‌ی مورد نظر «محیط» است. این بدان معناست که می‌توانید KVM را در رابط کاربری مدیریت، در مسیر APIها > پیکربندی محیط > نقشه‌های کلید-مقدار مشاهده کنید. KVMهای نشان داده شده در آن صفحه، همگی در محدوده‌ی محیط انتخاب شده قرار دارند.

دریافت KVM از یک فایل تحت اللفظی

این سیاست به نقشه FooKVM از مثال قبلی نگاه می‌کند، مقدار دوم (index="2") را از کلید FooKey_1 می‌گیرد و آن را در متغیری به نام foo_variable ذخیره می‌کند.

<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
  <DisplayName>GetKVM</DisplayName>
  <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
  <Scope>environment</Scope>
  <Get assignTo="foo_variable" index="2">
    <Key>
      <Parameter>FooKey_1</Parameter>
    </Key>
  </Get>
</KeyValueMapOperations>

قرار دادن KVM با یک متغیر

یک مثال ساده از یک نقشه کلید-مقدار مفید، سرویس کوتاه‌سازی URL است. نقشه کلید-مقدار می‌تواند طوری پیکربندی شود که URLهای کوتاه‌شده را به همراه URLهای کامل مربوطه ذخیره کند.

این نمونه سیاست، یک نقشه کلید/مقدار ایجاد می‌کند. این سیاست، یک کلید با دو مقدار مرتبط را در یک نقشه کلید/مقدار به نام "urlMapper" قرار می‌دهد.

<KeyValueMapOperations name="putUrl" mapIdentifier="urlMapper">
   <Scope>apiproxy</Scope>
   <Put override="true">
      <Key>
         <Parameter ref="urlencoding.requesturl.hashed"/>
      </Key>
      <Value ref="urlencoding.longurl.encoded"/>
      <Value ref="request.queryparam.url"/>
   </Put>
</KeyValueMapOperations>

کلید در این مثال، urlencoding.requesturl.hashed ، نمونه‌ای از یک متغیر سفارشی است. URL درخواست هش شده توسط کد (مثلاً جاوا اسکریپت یا جاوا) تولید شده و سپس در این متغیر ذخیره می‌شود، جایی که سیاست KeyValueMapOperations می‌تواند به آن دسترسی داشته باشد.

برای هر کلید، requesturl.hashed ، دو مقدار ذخیره می‌شود:

  • محتویات متغیر سفارشی با نام urlencoding.longurl.encoded
  • محتویات متغیر از پیش تعریف شده request.queryparam.url

برای مثال، وقتی سیاست در زمان اجرا اجرا می‌شود، مقادیر متغیرها ممکن است به شرح زیر باشد:

  • urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
  • urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
  • request.queryparam.url: http://apigee.com

نقشه و ورودی کلید/مقدار زیر در مخزن کلید/مقدار Edge ایجاد شده و به پروکسی API که سیاست به آن متصل است، محدود می‌شود:

{
    "entry" :[
        {
            "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be",
            "value" : "http://tinyurl.com/38lwmlr,http://apigee.com"
        }
    ],
    "name" : "urlMapper"
}

ورودی تا زمانی که حذف شود، باقی خواهد ماند. ورودی‌های ذخیره کلید/مقدار در نمونه‌هایی از Edge که روی ابر اجرا می‌شوند، توزیع شده‌اند.

دریافت KVM از یک متغیر

یک مثال ساده از یک نقشه کلید-مقدار مفید، سرویس «کوتاه‌سازی» URL است. نقشه کلید-مقدار می‌تواند طوری پیکربندی شود که URLهای کوتاه‌شده را به همراه URLهای کامل مربوطه ذخیره کند.

برای بازیابی مقدار ورودی نگاشت کلید/مقدار، مانند آنچه در تب KeyValueMapOperations PUT پوشش داده شده است، سیاستی را برای دریافت نگاشت کلید-مقدار پیکربندی کنید:

<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper">
   <Scope>apiproxy</Scope>
   <Get assignTo="urlencoding.shorturl" index='1'>
      <Key>
         <Parameter ref="urlencoding.requesturl.hashed"/>
      </Key>
   </Get>
</KeyValueMapOperations>

وقتی این سیاست اجرا می‌شود، اگر مقدار متغیر urlencoding.requesturl.hashed برابر با ed24e12820f2f900ae383b7cc4f2b31c402db1be باشد، متغیر سفارشی با نام urlencoding.shorturl با مقدار http://tinyurl.com/38lwmlr تنظیم خواهد شد.

اکنون که داده‌ها بازیابی شده‌اند، سایر سیاست‌ها و کدها می‌توانند با استخراج مقدار از آن متغیرها به آنها دسترسی پیدا کنند.

دریافت مقدار رمزگذاری شده از KVM

اگر یک نگاشت کلید-مقدار رمزگذاری شده باشد، مقادیر را با استفاده از پیشوند " private. " در مقدار ویژگی assignTo بازیابی کنید. در این مثال، متغیر private.encryptedVar مقدار رمزگشایی شده کلید foo نگاشت کلید-مقدار را در خود نگه می‌دارد. برای اطلاعات بیشتر در مورد ایجاد نگاشت‌های کلید-مقدار رمزگذاری شده، به مباحث "ایجاد" از API مدیریت نگاشت‌های کلید/مقدار مراجعه کنید.

<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map">
   <Scope>apiproxy</Scope>
   <Get assignTo="private.encryptedVar" index='1'>
      <Key>
         <Parameter>foo</Parameter>
      </Key>
   </Get>
</KeyValueMapOperations>

اکنون که داده‌ها بازیابی شده‌اند، سایر سیاست‌ها و کدها می‌توانند با استخراج مقدار از آن متغیر به آن دسترسی پیدا کنند.


مرجع عنصر

مرجع عنصر، عناصر و ویژگی‌های سیاست KeyValueMapOperations را توصیف می‌کند:

<KeyValueMapOperations async="false" continueOnError="false"
    enabled="true" name="Key-Value-Map-Operations-1"
    mapIdentifier="urlMapper" >
   <DisplayName>Key Value Map Operations 1</DisplayName>
   <Scope>environment</Scope>
   <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
   <InitialEntries>
      <Entry>
         <Key>
            <Parameter>key_name_literal</Parameter>
         </Key>
         <Value>value_literal</Value>
      </Entry>
      <Entry>
         <Key>
            <Parameter>variable_name</Parameter>
         </Key>
         <Value>value_1_literal</Value>
         <Value>value_2_literal</Value>
      </Entry>
   </InitialEntries>
   <Put override="false">
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value ref="variable_name"/>
   </Put>
   <Get assignTo="myvar" index="1">
      <Key>
         <Parameter ref="variable_name"/>
      </Key>
   </Get>
   <Delete>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
   </Delete>
</KeyValueMapOperations>

ویژگی‌های <KeyValueMapOperations>

مثال زیر ویژگی‌های موجود در تگ <KeyValueMapOperations> را نشان می‌دهد:

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">

جدول زیر ویژگی‌های خاص تگ <KeyValueMapOperations> را شرح می‌دهد:

ویژگی توضیحات پیش‌فرض حضور
شناسه نقشه

شناسه‌ای را مشخص می‌کند که هنگام دسترسی به نقشه‌ای که توسط این خط‌مشی یا در رابط کاربری مدیریت ایجاد شده است، استفاده می‌شود.

نام KVM در Apigee Edge برای Public Cloud به حروف کوچک و بزرگ حساس است. برای مثال، foobar با FooBar متفاوت است.

اگر این ویژگی را حذف کنید، از یک KVM به نام kvmap استفاده می‌شود.

در محدوده‌ی organization/environment/apiproxy، می‌توانید از ویژگی mapIdentifier برای مشخص کردن نام نقشه‌ی خود استفاده کنید.

ناموجود اختیاری

جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:

صفت توضیحات پیش فرض حضور
name

نام داخلی سیاست. مقدار مشخصه name می تواند شامل حروف، اعداد، فاصله، خط تیره، زیرخط و نقطه باشد. این مقدار نمی تواند بیش از 255 کاراکتر باشد.

در صورت تمایل، از عنصر <DisplayName> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

N/A مورد نیاز
continueOnError

برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است.

روی true تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.

نادرست اختیاری
enabled

برای اجرای خط مشی روی true تنظیم کنید.

برای خاموش کردن خط مشی، روی false تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.

درست است اختیاری
async

این ویژگی منسوخ شده است.

نادرست منسوخ شده است

عنصر <DisplayName>

علاوه بر ویژگی name برای برچسب‌گذاری خط‌مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.

<DisplayName>Policy Display Name</DisplayName>
پیش فرض

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی name خط مشی استفاده می شود.

حضور اختیاری
تایپ کنید رشته

عنصر <حذف>

جفت کلید/مقدار مشخص شده را حذف می‌کند. حداقل یکی از <Get> ، <Put> یا <Delete> باید استفاده شود.

حتماً نام KVM را با ویژگی mapIdentifier در عنصر والد مشخص کنید. برای مثال:

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
پیش‌فرض ناموجود
حضور اگر <Get> یا <Put> وجود نداشته باشند، الزامی است.
نوع ناموجود

عنصر <ورود>

مقادیر اولیه برای نقشه‌های کلید-مقدار، که هنگام مقداردهی اولیه نقشه کلید-مقدار در آن قرار می‌گیرند.

برای Edge برای فضای ابری عمومی، اندازه کلید به ۲ کیلوبایت محدود شده است. برای مثال:

<InitialEntries>
   <Entry>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value>v1</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>key_name_variable</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>
پیش‌فرض ناموجود
حضور اختیاری
نوع ناموجود

عنصر <ExclusiveCache>

منسوخ شده. به جای آن از عنصر <Scope> استفاده کنید.

عنصر <ExpiryTimeInSecs>

مدت زمانی را بر حسب ثانیه مشخص می‌کند که پس از آن Edge مقدار ذخیره شده خود را از KVM مشخص شده به‌روزرسانی می‌کند.

مقدار ۰ یا -۱، یا بدون در نظر گرفتن این عنصر، به این معنی است که مقدار پیش‌فرض ۳۰۰ ثانیه استفاده می‌شود. برای مثال:

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
پیش‌فرض 300 (۵ دقیقه)
حضور اختیاری
نوع عدد صحیح

KVM یک مکانیزم ماندگاری طولانی مدت است که کلیدها و مقادیر را در یک پایگاه داده NoSQL ذخیره می‌کند. به همین دلیل، خواندن از KVM در زمان اجرا می‌تواند به طور بالقوه عملکرد پروکسی را کند کند. برای بهبود عملکرد، Edge یک مکانیزم داخلی برای ذخیره کلیدها/مقادیر KVM در حافظه در زمان اجرا دارد. این سیاست عملیات KVM همیشه برای عملیات GET از حافظه پنهان می‌خواند.

عنصر <ExpiryTimeInSecs> به شما امکان می‌دهد مدت زمان ذخیره کلیدها/مقادیر استفاده شده در پالیسی در حافظه پنهان (cache) را قبل از به‌روزرسانی مجدد آنها از KVM کنترل کنید. با این حال، تفاوت‌هایی بین نحوه تأثیر عملیات GET و PUT بر انقضای حافظه پنهان وجود دارد.

GET - اولین باری که یک عملیات KVM GET اجرا می‌شود، کلیدها/مقادیر درخواستی از KVM (که نام آن در ویژگی mapIdentifier ریشه پالیسی مشخص شده است) در حافظه پنهان بارگذاری می‌شوند، جایی که برای عملیات GET بعدی باقی می‌مانند تا زمانی که یکی از موارد زیر رخ دهد:

  • تعداد ثانیه‌های مشخص شده در <ExpiryTimeInSecs> منقضی می‌شود.
    یا
  • یک عملیات PUT در یک سیاست KVM، مقادیر موجود (که در ادامه توضیح داده خواهد شد) را بازنویسی می‌کند.

PUT - یک عملیات PUT کلیدها/مقادیر را در KVM مشخص شده می‌نویسد. اگر PUT روی کلیدی بنویسد که از قبل در حافظه پنهان وجود دارد، آن حافظه پنهان بلافاصله رفرش می‌شود و اکنون مقدار جدید را برای تعداد ثانیه‌های مشخص شده در عنصر <ExpiryTimeInSecs> در خط‌مشی نگه می‌دارد.

مثال - ذخیره سازی KVM

  1. یک عملیات GET مقدار "rating" را بازیابی می‌کند که مقدار "10" را به حافظه پنهان اضافه می‌کند. <ExpiryTimeInSecs> در این خط‌مشی، 60 است.
  2. 30 ثانیه بعد، سیاست GET دوباره اجرا می‌شود و "10" را از حافظه پنهان بازیابی می‌کند.
  3. ۵ ثانیه بعد، یک سیاست PUT مقدار "rating" را به "8" به‌روزرسانی می‌کند، و <ExpiryTimeInSecs> در سیاست PUT برابر با ۲۰ است. حافظه پنهان بلافاصله با مقدار جدید به‌روزرسانی می‌شود، که اکنون تنظیم شده است که به مدت ۲۰ ثانیه در حافظه پنهان باقی بماند. (اگر PUT اتفاق نمی‌افتاد، حافظه پنهانی که در ابتدا توسط اولین GET پر شده بود، همچنان به مدت ۳۰ ثانیه دیگر، باقی مانده از ۶۰ ثانیه اصلی، وجود داشت.)
  4. ۱۵ ثانیه بعد، یک GET دیگر اجرا می‌شود و مقدار "۸" را بازیابی می‌کند.

عنصر <دریافت>

مقدار کلید مشخص شده را بازیابی می‌کند. حداقل یکی از <Get> ، <Put> یا <Delete> باید استفاده شود.

حتماً نام KVM را با ویژگی mapIdentifier در عنصر والد مشخص کنید.

شما می‌توانید چندین بلوک Get را در پالیسی برای بازیابی چندین مورد از یک KVM وارد کنید.

پیش‌فرض ناموجود
حضور اگر <Put> یا <Delete> وجود نداشته باشند، الزامی است.
نوع ناموجود

دریافت یک آیتم از KVM

<Get assignTo="myvar" index="1">
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Get>

دریافت چندین آیتم از KVM

در مثال زیر، یک KVM با کلیدها و مقادیر زیر را فرض کنید. KVM علاوه بر ذخیره لیست در حال اجرا از محبوب‌ترین فیلم‌های تمام دوران، نام کارگردان را برای همه فیلم‌های مهم ذخیره می‌کند.

کلید ارزش
برترین فیلم‌ها عروس شاهزاده، پدرخوانده، همشهری کین
همشهری کین اورسن ولز
عروس پرنسس راب راینر
پدرخوانده فرانسیس فورد کاپولا

در اینجا پیکربندی سیاست KVM را مشاهده می‌کنید که می‌توانیم برای بازیابی محبوب‌ترین فیلم فعلی و نام کارگردان آن استفاده کنیم:

<Get assignTo="top.movie.pick" index="1">
   <Key>
      <Parameter>top_movies</Parameter>
   </Key>
</Get>
<Get assignTo="movie.director">
   <Key>
      <Parameter ref="top.movie.pick"/>
   </Key>
</Get>

وقتی پروکسی API فراخوانی می‌شود، Edge متغیرهای زیر را ایجاد می‌کند که می‌توانید در جریان پروکسی API از آنها استفاده کنید:

  • top.movie.pick =Princess Bride
  • movie.director =Rob Reiner

ویژگی‌ها

جدول زیر ویژگی‌های عنصر <Get> را شرح می‌دهد:

ویژگی توضیحات پیش‌فرض حضور
اختصاص دادن

متغیری که مقدار بازیابی شده باید به آن اختصاص داده شود.

اگر نگاشت کلید-مقدار رمزگذاری شده باشد، نام assignTo را با « private. » شروع کنید. برای مثال:

<Get assignTo="private.myvar">

اگر سعی کنید بدون استفاده از پیشوند، یک نقشه کلید-مقدار رمزگذاری شده را بازیابی کنید، این خط‌مشی خطا می‌دهد. پیشوند، که برای اهداف امنیتی اولیه در طول اشکال‌زدایی مورد نیاز است، مقادیر رمزگذاری شده را از جلسات ردیابی و اشکال‌زدایی پروکسی API پنهان می‌کند.

برای اطلاعات بیشتر در مورد ایجاد نقشه‌های کلید-مقدار رمزگذاری شده، به مباحث «ایجاد» در API مدیریت نقشه‌های کلید/مقدار و ایجاد و ویرایش نقشه‌های کلید-مقدار محیطی مراجعه کنید.

ناموجود مورد نیاز
شاخص

شماره اندیس (در یک اندیس مبتنی بر ۱) آیتمی که قرار است از یک کلید چند مقداری واکشی شود. برای مثال، تعیین index=1 اولین مقدار را برمی‌گرداند و آن را به متغیر assignTo اختصاص می‌دهد. اگر هیچ مقدار اندیسی مشخص نشود، تمام مقادیر آن ورودی به صورت java.util.List به متغیر اختصاص داده می‌شوند.

برای مثال، به برگه «دریافت مقدار رمزگذاری شده از KVM» در نمونه‌ها مراجعه کنید.

ناموجود اختیاری

عنصر <InitialEntry>

مقادیر اولیه برای نقشه‌های کلید-مقدار، که هنگام مقداردهی اولیه در نقشه کلید-مقدار قرار می‌گیرند. حتماً نام KVM را با ویژگی mapIdentifier در عنصر والد مشخص کنید. برای مثال:

<InitialEntries>
   <Entry>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value>v1</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>key_name_variable</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>

هنگام استفاده از این عنصر، وقتی که شما سیاست را در رابط کاربری مدیریت روی یک نسخه مستقر شده از پروکسی ذخیره می‌کنید، یا بسته پروکسی API حاوی سیاست را با این عنصر مستقر می‌کنید، کلید(ها) به طور خودکار در KVM (به صورت رمزگذاری نشده) ایجاد می‌شوند. اگر مقادیر موجود در سیاست با مقادیر موجود در KVM متفاوت باشند، مقادیر موجود در KVM هنگام استقرار پروکسی رونویسی می‌شوند. هر کلید/مقدار جدید در کنار کلید/مقدارهای موجود به KVM موجود اضافه می‌شود.

کلیدها و مقادیری که توسط این عنصر پر می‌شوند باید به صورت لیترال باشند. برای مثال، <Parameter ref="request.queryparam.key"> در این عنصر پشتیبانی نمی‌شود.

اندازه کلید برای هر دو Edge برای ابر عمومی و Edge برای ابر خصوصی به ۲ کیلوبایت محدود شده است. مقدار KVM نیز به ۲ کیلوبایت محدود شده است.

برای ایجاد یک KVM رمزگذاری شده، از API مدیریت Key/Value Maps استفاده کنید.

پیش‌فرض ناموجود
حضور اختیاری
نوع ناموجود

عنصر <کلید>

کلید را در یک ورودی نگاشت کلید/مقدار مشخص می‌کند. یک کلید می‌تواند مرکب باشد، به این معنی که می‌توان بیش از یک پارامتر را برای ایجاد کلید اضافه کرد. به عنوان مثال، userID و role ممکن است برای ایجاد یک key ترکیب شوند. به عنوان مثال:

<Key>
    <Parameter>key_name_literal</Parameter>
</Key>

برای جزئیات بیشتر در مورد نحوه تنظیم نام کلید، حتماً عنصر <Parameter> را مشاهده کنید.

با Edge برای فضای ابری عمومی، اندازه کلید به ۲ کیلوبایت محدود می‌شود. برای اطلاعات بیشتر به تفاوت‌های بین API Edge برای فضای ابری عمومی و API فضای ابری خصوصی مراجعه کنید.

پیش‌فرض ناموجود
حضور اختیاری
نوع ناموجود

عنصر <پارامتر>

کلید را در یک جفت کلید/مقدار مشخص می‌کند. این عنصر نام را هنگام ایجاد، قرار دادن، بازیابی یا حذف جفت کلید/مقدار مشخص می‌کند.

شما می‌توانید با استفاده از موارد زیر نام را مشخص کنید:

  • یک رشته‌ی تحت‌اللفظی

    <Key>
      <Parameter>literal</Parameter>
    </Key>
  • متغیری که در زمان اجرا با استفاده از ویژگی ref بازیابی می‌شود.

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
  • ترکیبی از لیترال‌ها و ارجاعات متغیر

    <Key>
      <Parameter>targeturl</Parameter>
      <Parameter ref="apiproxy.name"/>
      <Parameter>weight</Parameter>
    </Key>

وقتی عنصر Key شامل چندین عنصر Parameter باشد، رشته کلید مؤثر، الحاق مقادیر هر پارامتر است که با دو زیرخط به هم متصل شده‌اند. برای مثال، در مثال بالا، اگر متغیر apiproxy.name مقدار "abc1" را داشته باشد، آنگاه کلید مؤثر targeturl__abc1__weight خواهد بود.

چه بخواهید یک ورودی کلید/مقدار را دریافت، به‌روزرسانی یا حذف کنید، نام کلید باید با نام کلید در نقشه کلید-مقدار مطابقت داشته باشد. برای دستورالعمل‌ها به بخش تعیین و بازیابی نام‌های کلید مراجعه کنید.

پیش‌فرض ناموجود
حضور مورد نیاز
نوع رشته

ویژگی‌ها

جدول زیر ویژگی‌های عنصر <Parameter> را شرح می‌دهد:

ویژگی توضیحات پیش‌فرض حضور
مرجع نام متغیری را مشخص می‌کند که مقدار آن شامل نام دقیق کلیدی است که می‌خواهید ایجاد، دریافت یا حذف کنید. ناموجود اگر هیچ مقدار تحت‌اللفظی بین تگ‌های باز و بسته ارائه نشود، الزامی است. اگر مقدار تحت‌اللفظی ارائه شود، ممنوع است.

عنصر <Put>

یک جفت کلید/مقدار را در یک نگاشت کلید-مقدار می‌نویسد، چه نگاشت کلید-مقدار رمزگذاری شده باشد و چه رمزگذاری نشده باشد. اگر نگاشت کلید-مقدار مشخص شده در ویژگی mapIdentifier روی عنصر والد وجود نداشته باشد، نگاشت به طور خودکار (به صورت رمزگذاری نشده) ایجاد می‌شود. اگر نگاشت کلید-مقدار از قبل وجود داشته باشد، کلید/مقدار به آن اضافه می‌شود.

برای ایجاد یک نقشه کلید-مقدار رمزگذاری شده، از API مدیریت نقشه‌های کلید/مقدار استفاده کنید؛ یا برای ایجاد KVM های رمزگذاری شده در محدوده محیط در رابط کاربری، به بخش ایجاد و ویرایش نقشه‌های کلید-مقدار محیط مراجعه کنید.

<Put override="false">
   <Key>
      <Parameter ref="mykeyvar"/>
   </Key>
   <Value ref="myvalvar1"/>
</Put>
پیش‌فرض ناموجود
حضور اگر <Get> یا <Delete> وجود نداشته باشند، الزامی است.
نوع ناموجود

ویژگی‌ها

جدول زیر ویژگی‌های عنصر <Put> را شرح می‌دهد:

ویژگی توضیحات پیش‌فرض حضور
نادیده گرفتن

اگر روی true تنظیم شود، مقدار یک کلید را لغو می‌کند.

false اختیاری

عنصر <scope>

مرز دسترسی برای نقشه‌های کلید-مقدار را تعریف می‌کند. دامنه پیش‌فرض environment است، به این معنی که به طور پیش‌فرض، ورودی‌های نقشه‌ها توسط همه پروکسی‌های API که در یک محیط (به عنوان مثال، test یا prod) اجرا می‌شوند، به اشتراک گذاشته می‌شوند. اگر دامنه را روی apiproxy تنظیم کنید، ورودی‌های نقشه کلید-مقدار فقط توسط پروکسی API که مقادیر را در نقشه می‌نویسد، قابل دسترسی هستند.

توجه داشته باشید که هنگام دسترسی به یک نقشه یا ورودی نقشه، باید همان مقدار دامنه‌ای را که هنگام ایجاد نقشه استفاده کرده‌اید، مشخص کنید. برای مثال، اگر نقشه با دامنه apiproxy ایجاد شده باشد، هنگام بازیابی مقادیر آن، اعمال تغییرات یا حذف ورودی‌ها، باید از دامنه apiproxy استفاده کنید.

<Scope>environment</Scope>
پیش‌فرض environment
حضور اختیاری
نوع رشته
مقادیر معتبر:
  • organization
  • environment
  • apiproxy
  • policy (ویرایش پروکسی API)

عنصر <مقدار>

مقدار یک کلید را مشخص می‌کند. می‌توانید مقدار را به عنوان یک رشته‌ی تحت‌اللفظی یا با استفاده از ویژگی ref ، به عنوان یک متغیر که در زمان اجرا بازیابی می‌شود، مشخص کنید:

<!-- Specify a literal value -->
<Value>literal<Value>

یا:

<!-- Specify the name of variable value to be populated at run time. -->
<Value ref="variable_name"/>

همچنین می‌توانید چندین عنصر <Value> را برای مشخص کردن یک مقدار چندبخشی وارد کنید. مقادیر در زمان اجرا ترکیب می‌شوند.

در مثال زیر، دو کلید به KVM اضافه شده است:

  • کلید k1 با مقادیر v1,v2
  • کلید k2 با مقادیر v3,v4
<InitialEntries>
   <Entry>
      <Key>
         <Parameter>k1</Parameter>
      </Key>
      <Value>v1</Value>
      <Value>v2</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>k2</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>

در مثال زیر، یک کلید با دو مقدار ایجاد شده است. فرض کنید نام سازمان foo_org ، نام پروکسی API bar و محیط test است:

  • کلید foo_org با bar,test
<Put>
    <Key>
        <Parameter ref="organization.name"/>
    </Key>
    <Value ref="apiproxy.name"/>
    <Value ref="environment.name"/>
</Put>
پیش‌فرض ناموجود
حضور مورد نیاز
نوع رشته

ویژگی‌ها

جدول زیر ویژگی‌های عنصر <Value> را شرح می‌دهد:

ویژگی توضیحات پیش‌فرض حضور
مرجع نام متغیری را مشخص می‌کند که مقدار آن شامل مقدار(های) کلیدی است که می‌خواهید تنظیم کنید. ناموجود اگر هیچ مقدار تحت‌اللفظی بین تگ‌های باز و بسته ارائه نشود، الزامی است. اگر مقدار تحت‌اللفظی ارائه شود، ممنوع است.

مرجع خطا

خطاهایی که از سیاست‌های Edge برگردانده می‌شوند، از یک قالب ثابت پیروی می‌کنند، همانطور که در مرجع کد خطا توضیح داده شده است.

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطا را که توسط Edge تنظیم می‌شوند، هنگامی که این خط‌مشی خطا را راه‌اندازی می‌کند، توضیح می‌دهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای سیاست رخ دهند.

کد خطا وضعیت HTTP علت ثابت
steps.keyvaluemapoperations.SetVariableFailed 500

اگر بخواهید مقداری را از نقشه مقدار کلید رمزگذاری شده بازیابی کنید و مقدار آن را روی متغیری تنظیم کنید که نام آن پیشوند private ندارد، این خطا رخ می دهد. پیشوندی که برای اهداف امنیتی اولیه در حین اشکال‌زدایی لازم است، مقادیر رمزگذاری‌شده را از ردیابی پراکسی API و جلسات اشکال‌زدایی پنهان می‌کند.

steps.keyvaluemapoperations.UnsupportedOperationException 500

اگر مشخصه mapIdentifier روی رشته خالی در خط مشی عملیات Map Value Key تنظیم شده باشد، این خطا رخ می دهد.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت ثابت
InvalidIndex اگر ویژگی index مشخص شده در عنصر <Get> خط مشی عملیات نقشه ارزش کلیدی صفر یا یک عدد منفی باشد، در این صورت استقرار پراکسی API با شکست مواجه می شود. شاخص از 1 شروع می شود، بنابراین یک شاخص صفر یا منفی به عنوان نامعتبر در نظر گرفته می شود.
KeyIsMissing این خطا در صورتی رخ می دهد که عنصر <Key> به طور کامل گم شده باشد یا عنصر <Parameter> در عنصر <Key> در زیر <Entry> عنصر <InitialEntries> خط مشی Key Value Map Operations وجود نداشته باشد.
ValueIsMissing این خطا در صورتی رخ می دهد که عنصر <Value> در زیر عنصر <Entry> عنصر <InitialEntries> خط مشی Key Value Map Operations وجود نداشته باشد.

طرحواره‌ها

یادداشت‌های استفاده

برای مرور کلی نقشه‌های ارزش کلیدی، به کار با نقشه‌های ارزش کلیدی مراجعه کنید.

یک مخزن نقشه کلید-مقدار، یک مکانیزم پایداری سبک برای داده‌هایی که به صورت جفت‌های کلید/مقدار قالب‌بندی شده‌اند، فراهم می‌کند. می‌توانید در زمان اجرا از طریق سیاست‌ها یا کد به این داده‌ها دسترسی داشته باشید. یک نقشه شامل هر داده دلخواهی با قالب key=value .

برای مثال localhost=127.0.0.1 ، zip_code=94110 یا first_name=felix . در مثال اول، localhost یک کلید و 127.0.0.1 یک مقدار است. هر جفت کلید/مقدار به عنوان یک ورودی در یک نگاشت کلید-مقدار ذخیره می‌شود. یک نگاشت کلید-مقدار می‌تواند ورودی‌های زیادی را ذخیره کند.

در اینجا مثالی از استفاده از نقشه‌های کلید-مقدار آورده شده است. فرض کنید نیاز به ذخیره لیستی از آدرس‌های IP مرتبط با محیط‌های مختلف backend دارید. می‌توانید یک نقشه کلید-مقدار به نام ipAddresses ایجاد کنید که شامل لیستی از جفت‌های کلید/مقدار به عنوان ورودی باشد. برای مثال، این JSON می‌تواند چنین نقشه‌ای را نشان دهد:

{
  "entry" : [ {
    "name" : "Development",
    "value" : "65.87.18.18"
  }, {
    "name" : "Staging",
    "value" : "65.87.18.22"
  } ],
  "name" : "ipAddresses"
}

شما می‌توانید از این ساختار برای ایجاد مخزنی از آدرس‌های IP استفاده کنید که می‌توانند توسط سیاست‌ها در زمان اجرا برای اعمال لیست مجاز یا لیست ممنوعه IP، انتخاب پویای یک آدرس هدف backend و غیره استفاده شوند. معمولاً، سیاست KeyValueMapOperations برای ذخیره یا بازیابی اطلاعات با طول عمر بالا که نیاز به استفاده مجدد در چندین تراکنش درخواست/پاسخ دارند، استفاده می‌شود.

نقشه‌های کلید/مقدار را می‌توان از طریق سیاست KeyValueMapOperations یا مستقیماً از طریق API مدیریت Apigee Edge دستکاری کرد. برای جزئیات بیشتر در مورد API نقشه‌های کلید/مقدار سازمانی، به مرجع API مدیریت مراجعه کنید. می‌توانید از API برای مثال، آپلود مجموعه داده‌های بزرگ به مخزن کلید/مقدار یا ایجاد اسکریپت‌هایی برای مدیریت ورودی‌های نقشه کلید/مقدار استفاده کنید. قبل از دسترسی به آن با سیاست KeyValueMapOperations، باید یک نقشه کلید/مقدار با API ایجاد کنید.

تعیین و بازیابی نام کلیدها

با استفاده از عناصر <Parameter> و <Value> ، می‌توانید یک مقدار تحت‌اللفظی (که مقدار بین تگ‌های باز و بسته قرار می‌گیرد) را مشخص کنید یا از ویژگی ref برای مشخص کردن نام متغیری که مقدار آن باید در زمان اجرا استفاده شود، استفاده کنید.

عنصر Parameter شایسته توجه ویژه است، زیرا نام کلیدی که ایجاد می‌شود و همچنین نام کلیدی که می‌خواهید بازیابی یا حذف کنید را تعیین می‌کند. در زیر دو مثال آورده شده است. مثال اول نام کلید را به معنای واقعی کلمه مشخص می‌کند و مثال دوم نام کلید را با استفاده از یک متغیر مشخص می‌کند. فرض کنید از موارد زیر برای ایجاد کلیدها در KVM استفاده می‌شود:

<Parameter>key_name_literal</Parameter>
<Parameter ref="key.name.variable"/>

در حالت اول، مقدار تحت‌اللفظی "key_name_literal" به عنوان نام کلید در KVM ذخیره می‌شود. در حالت دوم، هر مقداری که در key.name.variable باشد، نام کلید در KVM می‌شود. برای مثال، اگر key.name.variable حاوی مقدار foo باشد، نام کلید "foo" خواهد بود.

وقتی می‌خواهید کلید و مقدار کلید را با عملیات GET بازیابی کنید (یا با عملیات DELETE حذف کنید)، تنظیم <Parameter> باید با نام کلید در KVM مطابقت داشته باشد. برای مثال، اگر نام کلید در KVM "foo" باشد، می‌توانید مقدار تحت‌اللفظی را با <Parameter>foo</Parameter> مشخص کنید یا متغیری را مشخص کنید که حاوی مقدار دقیق "foo" باشد، مانند این: <Parameter ref="variable.containing.foo"/> .

مباحث مرتبط