درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
چه
دسترسی مبتنی بر خطمشی به فروشگاه «نقشه مقدار کلید» (KVM) دردسترس در Apigee Edge را فراهم میکند. با پیکربندی خطمشیهای KeyValueMapOperations که عملیات PUT، GET، یا DELETE را مشخص میکنند، میتوان جفتهای کلید/مقدار را در نقشههای نامگذاریشده موجود ذخیره، بازیابی، و حذف کرد. (حداقل یکی از این عملیات باید توسط خطمشی انجام شود.)
ویدیوها
برای کسب اطلاعات بیشتر درباره KVM، ویدیوهای زیر را تماشا کنید.
| ویدیو | شرح |
|---|---|
| چرا «نقشههای مقدار کلید»؟ | ببینید چرا به KVM نیاز دارید و چگونه کار میکنند. |
| ایجاد KVM بااستفاده از واسط کاربر و بازیابی KVM در زمان اجرا | یک KVM ایجاد کنید، مقدار آن را بااستفاده از خطمشی KVM بازیابی کنید، و مقدار را بااستفاده از متغیرهای جریان در درخواست API تزریق کنید. |
| ایجاد و بهروزرسانی یک KVM در زمان اجرای میانای برنامهسازی کاربردی | بااستفاده از خطمشی KVM، در زمان اجرای API یک KVM ایجاد کنید. |
| ذخیره کردن KVM در حافظه نهان برای افزایش عملکرد | با ذخیره کردن دادهها در حافظه نهان، عملکرد «خطمشی KVM» را بهبود دهید. |
| ذخیره رمزگذاریشده KVM | اطلاعات حساس را در KVM بهصورت رمزگذاریشده ذخیره کنید و مقدار را در زمان اجرا بااستفاده از خطمشی KVM و متغیرهای خصوصی بازیابی کنید. |
| مدیریت دسترسی بااستفاده از محدوده KVM | بااستفاده از ویژگی محدوده خطمشی KVM، KVM را به سازمان، محیط، کارگزار نیابتی API، یا نسخه بازبینی کارگزار نیابتی API محدود کنید. |
| حذف ورودیهای KVM در زمان اجرای میانای برنامهسازی کاربردی | ورودیهای KVM را در زمان اجرای میانای برنامهسازی کاربردی بااستفاده از عملیات 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 را در واسط کاربر مدیریت در بخش واسطهای برنامهسازی کاربردی > پیکربندی محیط > نقشههای مقدار کلید ببینید. همه KVMهای نشاندادهشده در آن صفحه به محیط انتخابی محدود میشوند.
دریافت KVM از یک مقدار ثابت
این خطمشی به نقشه FooKVM از مثال قبلی نگاه میکند، مقدار دوم (نمایه="۲") را از کلید 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 با متغیر
نمونه سادهای از نقشه مقدار کلید مفید، سرویس کوتاه کردن نشانی وب است. نقشه مقدار کلید میتواند برای ذخیره کردن نشانیهای وب کوتاهشده بههمراه نشانیهای وب کامل مربوطه پیکربندی شود.
این نمونه خطمشی نقشه مقدار کلید ایجاد میکند. این خطمشی کلیدی را با دو مقدار مرتبط در نقشه کلید/مقدار با نام «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، نمونهای از متغیر سفارشی است. نشانی وب درخواست درهمسازیشده توسط کد (مثلاً جاوا اسکریپت یا جاوا) تولید میشود و سپس در این متغیر ذخیره میشود، جایی که خطمشی KeyValueMapOperations میتواند به آن دسترسی داشته باشد.
برای هر کلید، requesturl.hashed، دو مقدار ذخیره میشود:
- محتوای متغیر سفارشی با نام
urlencoding.longurl.encoded - محتوای متغیر ازپیشتعریفشده
request.queryparam.url
برای مثال، وقتی خطمشی در زمان اجرا اجرا میشود، مقادیر متغیرها ممکن است بهصورت زیر باشد:
urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1beurlencoding.longurl.encoded: http://tinyurl.com/38lwmlrrequest.queryparam.url: http://apigee.com
نقشه و ورودی کلید/مقدار زیر در فروشگاه کلید/مقدار Edge تولید میشود و به پراکسی میانای برنامهسازی کاربردی که خطمشی به آن پیوست شده است محدود میشود:
{
"entry" :[
{
"name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be",
"value" : "http://tinyurl.com/38lwmlr,http://apigee.com"
}
],
"name" : "urlMapper"
}ورودی تا زمانی که حذف شود باقی میماند. ورودیهای فروشگاه کلید/مقدار در سراسر نمونههای Edge که درحال اجرای ابر هستند توزیع میشوند.
دریافت KVM از متغیر
نمونه سادهای از نقشه مقدار کلید مفید، سرویس «کوتهسازی» نشانی وب است. نقشه مقدار کلید میتواند برای ذخیره کردن نشانیهای وب کوتاهشده بههمراه نشانیهای وب کامل مربوطه پیکربندی شود.
برای بازیابی مقدار ورودی نقشه کلید/مقدار، مثل موردی که در زبانه «عملیات نقشه کلید/مقدار» پوشش داده شده است، خطمشیای را برای «دریافت» نقشه کلید/مقدار پیکربندی کنید:
<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 را نگه میدارد. برای کسب اطلاعات درباره ایجاد نقشههای مقدار کلید رمزگذاریشده، موضوعات «ایجاد»
در میانای برنامهسازی کاربردی مدیریت نقشههای کلید/مقدار را ببینید.
<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> را شرح میدهد:
| مشخصه | شرح | پیشفرض | حضور |
|---|---|---|---|
| mapIdentifier |
شناسه مشخصی را برای استفاده هنگام دسترسی به نقشه ایجادشده توسط این خطمشی یا در واسط کاربر مدیریت مشخص میکند. نام KVM در Apigee Edge برای «ابر عمومی» حروفحساس است.
برای مثال، اگر این مشخصه را مستثنا کنید، از KVM بهنام در محدوده سازمان/محیط/کارگزار پراکسی API، میتوانید از
ویژگی |
موجود نیست | اختیاری |
جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:
| صفت | توضیحات | پیش فرض | حضور |
|---|---|---|---|
name | نام داخلی سیاست. مقدار مشخصه در صورت تمایل، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی روی | نادرست | اختیاری |
enabled | برای اجرای خط مشی روی برای خاموش کردن خط مشی، روی | درست است | اختیاری |
async | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
عنصر <DisplayName>
علاوه بر ویژگی name برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
<DisplayName>Policy Display Name</DisplayName>
| پیش فرض | N/A اگر این عنصر را حذف کنید، از مقدار ویژگی |
|---|---|
| حضور | اختیاری |
| تایپ کنید | رشته |
عنصر <Delete>
جفت کلید/مقدار مشخصشده را حذف میکند. حداقل یکی از <Get>،
<Put>، یا <Delete> باید استفاده شود.
حتماً نام KVM را با مشخصه mapIdentifier در عنصر والد مشخص کنید. برای مثال:
<Delete>
<Key>
<Parameter>key_name_literal</Parameter>
</Key>
</Delete>| پیشفرض | موجود نیست |
|---|---|
| حضور | اگر <Get> یا <Put> وجود نداشته باشد، الزامی است. |
| نوع | موجود نیست |
عنصر <Entry>
مقادیر بنیادی برای نقشههای مقدار کلیدی که هنگام مقداردهی اولیه نقشه مقدار کلیدی در آن درج میشوند.
برای Edge for Public Cloud، اندازه کلید به ۲ کیلوبایت محدود میشود. برای مثال:
<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> به شما امکان میدهد کنترل کنید کلیدها/مقادیر
استفادهشده در خطمشی چه مدت در حافظه نهان ذخیره شوند تا دوباره از KVM بازآوری شوند. بااینحال،
تفاوتهایی بین نحوه تأثیر عملیات GET و PUT بر انقضای حافظه نهان وجود دارد.
GET - اولینباری که عملیات KVM GET اجرا میشود، کلیدها/مقادیر درخواستشده از KVM (که نام آن در ریشه خطمشی mapIdentifier
مشخص شده است) در حافظه نهان بار میشود و در آنجا برای عملیات GET بعدی باقی میماند تا یکی از موارد زیر رخ دهد:
- تعداد ثانیههای مشخصشده در
<ExpiryTimeInSecs>منقضی میشود.
یا - یک عملیات PUT در خطمشی KVM مقادیر موجود را رونویسی میکند (در ادامه توضیح داده شده است).
PUT - عملیات PUT کلیدها/مقادیر را در KVM مشخصشده مینویسد. اگر PUT
در کلیدی که ازقبل در حافظه نهان وجود دارد بنویسد، آن حافظه نهان بلافاصله بازآوری میشود و اکنون
مقدار جدید را برای تعداد ثانیههای مشخصشده در عنصر
<ExpiryTimeInSecs> خطمشی نگهداری میکند.
مثال - ذخیره کردن KVM در حافظه نهان
- یک عملیات GET مقدار «ردهبندی» را بازیابی میکند که مقدار «۱۰» را به حافظه نهان اضافه میکند.
<ExpiryTimeInSecs>در خطمشی ۶۰ است. - ۳۰ ثانیه بعد، خطمشی GET دوباره اجرا میشود و «۱۰» را از حافظه نهان بازیابی میکند.
- ۵ ثانیه بعد، خطمشی PUT مقدار «ردهبندی» را به «۸» بهروز میکند، و
<ExpiryTimeInSecs>در خطمشی PUT برابر با ۲۰ است. حافظه نهان بلافاصله با مقدار جدید بازآوری میشود، که اکنون تنظیم شده است تا ۲۰ ثانیه در حافظه نهان باقی بماند. (اگر PUT اتفاق نیفتاده بود، حافظه نهان که دراصل با اولین GET پر شده بود همچنان برای ۳۰ ثانیه دیگر وجود داشت، که از ۶۰ ثانیه اصلی باقی مانده بود.) - ۱۵ ثانیه بعد، GET دیگری اجرا میشود و مقدار «۸» را بازیابی میکند.
عنصر <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 نام کارگردان همه فیلمهای مهم را نیز ذخیره میکند.
| کلید | مقدار |
|---|---|
| top_movies | عروس شاهزاده، پدرخوانده، همشهری کین |
| همشهری کین | اورسن ولز |
| عروس شاهزاده | راب راینر |
| پدرخوانده | فرانسیس فورد کاپولا |
در اینجا پیکربندی خطمشی 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>
وقتی کارگزار میانای برنامهسازی کاربردی فراخوانده میشود، Edge متغیرهای زیر را ایجاد میکند که میتوانید در جریان کارگزار میانای برنامهسازی کاربردی استفاده کنید:
top.movie.pick=Princess Bridemovie.director=Rob Reiner
مشخصهها
جدول زیر مشخصههای عنصر <Get> را شرح میدهد:
| مشخصه | شرح | پیشفرض | حضور |
|---|---|---|---|
| assignTo |
متغیری که مقدار بازیابیشده باید به آن اختصاص داده شود. اگر نقشه مقدار کلید رمزگذاری شده است، نام assignTo را با
« <Get assignTo="private.myvar"> اگر بدون استفاده از پیشوند سعی کنید نقشه مقدار کلید رمزگذاریشده را بازیابی کنید، خطایی در خطمشی ایجاد میشود. پیشوند که برای اهداف امنیتی اولیه درطول اشکالزدایی لازم است، مقادیر رمزگذاریشده را از جلسات اشکالزدایی و «ردیابی» کارگزار میانای برنامهسازی کاربردی پنهان میکند. برای کسب اطلاعات درباره ایجاد نقشههای مقدار کلید رمزگذاریشده، موضوعات «ایجاد» در میانای برنامهسازی کاربردی مدیریت نقشههای کلید/مقدار و ایجاد و ویرایش نقشههای مقدار کلید محیط را ببینید. |
موجود نیست | الزامی |
| نمایه |
شماره نمایه (در نمایه مبتنی بر ۱) موردی که باید از کلید چندمقداری واکشی شود.
برای مثال، مشخص کردن برای مثال، برگه «دریافت مقدار رمزگذاریشده از KVM» را در نمونهها ببینید. |
موجود نیست | اختیاری |
عنصر <InitialEntries>
مقادیر بنیادی برای نقشههای مقدار کلیدی که هنگام مقداردهی اولیه نقشه مقدار کلیدی در آن درج میشوند.
حتماً نام 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 رمزگذاریشده، از میانای برنامهسازی کاربردی مدیریت «نقشههای کلید/مقدار» استفاده کنید.
| پیشفرض | موجود نیست |
|---|---|
| حضور | اختیاری |
| نوع | موجود نیست |
عنصر <Key>
کلید را در ورودی نقشه کلید/مقدار مشخص میکند. کلید میتواند ترکیبی باشد، یعنی بیشاز
یک پارامتر میتواند برای ایجاد کلید پیوست شود. برای مثال، userID و
role ممکن است با هم ترکیب شوند تا key ایجاد شود. برای مثال:
<Key>
<Parameter>key_name_literal</Parameter>
</Key>برای جزئیات مربوط به نحوه تنظیم نام کلید، حتماً عنصر <Parameter> را ببینید.
با Edge for Public Cloud، اندازه کلید به ۲ کیلوبایت محدود میشود. برای اطلاعات بیشتر، تفاوتهای بین Edge for Public Cloud API و Private Cloud API را ببینید.
| پیشفرض | موجود نیست |
|---|---|
| حضور | اختیاری |
| نوع | موجود نیست |
عنصر <Parameter>
کلید را در جفت کلید/مقدار مشخص میکند. این عنصر نام را هنگام ایجاد، قرار دادن، بازیابی، یا حذف جفت کلید/مقدار مشخص میکند.
بااستفاده از موارد زیر میتوانید نام را مشخص کنید:
-
رشته تحتاللفظی
<Key> <Parameter>literal</Parameter> </Key>
-
متغیری که در زمان اجرا بااستفاده از مشخصه
refبازیابی میشود<Key> <Parameter ref="variable_name"/> </Key>
-
ترکیبی از حروف و ارجاعهای متغیر
<Key> <Parameter>targeturl</Parameter> <Parameter ref="apiproxy.name"/> <Parameter>weight</Parameter> </Key>
وقتی عنصر «کلید» شامل چندین عنصر «پارامتر» باشد، رشته کلید مؤثر عبارت است از
بههم پیوستن مقادیر هر پارامتر که با دو خط زیر به هم متصل شدهاند. برای مثال، در
مثال بالا، اگر متغیر apiproxy.name مقدار «abc1» را داشته باشد، کلید
مؤثر targeturl__abc1__weight خواهد بود.
چه درحال دریافت، بهروزرسانی، یا حذف ورودی کلید/مقدار باشید، نام کلید باید با نام کلید در نقشه کلید مقدار مطابقت داشته باشد. برای دریافت رهنمودها، مشخص کردن و بازیابی نامهای کلید را ببینید.
| پیشفرض | موجود نیست |
|---|---|
| حضور | الزامی |
| نوع | رشته |
مشخصهها
جدول زیر مشخصههای عنصر <Parameter> را شرح میدهد:
| مشخصه | شرح | پیشفرض | حضور |
|---|---|---|---|
| مرجع | نام متغیری را مشخص میکند که مقدار آن حاوی نام دقیق کلیدی است که میخواهید ایجاد، دریافت، یا حذف کنید. | موجود نیست | اگر مقدار لفظی بین برچسبهای باز و بسته ارائه نشده باشد، الزامی است. اگر مقدار تحتاللفظی داده شود، ممنوع است. |
عنصر <Put>
جفت کلید/مقدار را در نقشه کلید مقدار مینویسد، چه نقشه کلید مقدار رمزگذاریشده باشد چه رمزگذارینشده. اگر نقشه مقدار کلید مشخصشده در مشخصه mapIdentifier در عنصر
والد وجود نداشته باشد، نقشه بهطور خودکار (بهصورت رمزگذارینشده) ایجاد میشود. اگر نقشه مقدار کلید
ازقبل وجود داشته باشد، کلید/مقدار به آن اضافه میشود.
برای ایجاد نقشه مقدار کلید رمزگذاریشده، از میانای برنامهسازی کاربردی مدیریت نقشههای کلید/مقدار استفاده کنید؛ یا برای ایجاد KVMهای رمزگذاریشده با محدوده محیط در واسط کاربر، ایجاد و ویرایش نقشههای مقدار کلید محیط را ببینید.
<Put override="false"> <Key> <Parameter ref="mykeyvar"/> </Key> <Value ref="myvalvar1"/> </Put>
| پیشفرض | موجود نیست |
|---|---|
| حضور | اگر <Get> یا <Delete> وجود نداشته باشد، الزامی است. |
| نوع | موجود نیست |
مشخصهها
جدول زیر مشخصههای عنصر <Put> را شرح میدهد:
| مشخصه | شرح | پیشفرض | حضور |
|---|---|---|---|
| ملغی کردن |
اگر روی |
false |
اختیاری |
عنصر <Scope>
محدوده دسترسپذیری را برای نقشههای مقدار کلید تعریف میکند. محدوده پیشفرض
environment است، یعنی بهطور پیشفرض، ورودیهای نقشه توسط همه پراکسیهای میانای برنامهسازی کاربردی
که در محیطی (برای نمونه، آزمایش یا تولید) اجرا میشوند همرسانی میشود. اگر محدوده را روی
apiproxy تنظیم کنید، ورودیهای نقشه مقدار کلید فقط ازطریق پراکسی API که
مقادیر را در نقشه مینویسد قابلدسترسی است.
توجه داشته باشید که هنگام دسترسی به نقشه یا ورودی نقشه، باید مقدار حوزه یکسانی را که هنگام ایجاد نقشه استفاده کردهاید مشخص کنید. برای مثال، اگر نقشه با محدوده
apiproxy ایجاد شده است، هنگام بازیابی مقادیر آن،
اعمال تغییرات، یا حذف ورودیها باید از محدوده apiproxy استفاده کنید.
<Scope>environment</Scope>
| پیشفرض | environment |
|---|---|
| حضور | اختیاری |
| نوع | رشته |
| مقادیر معتبر: |
|
عنصر <Value>
مقدار کلید را مشخص میکند. میتوانید مقدار را بهعنوان رشتهای تحتاللفظی یا بااستفاده از
مشخصه 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 |
۵۰۰ |
اگر بخواهید مقداری را از نقشه مقدار کلید رمزگذاریشده بازیابی کنید و مقدار را روی متغیری تنظیم کنید که نام آن پیشوند |
build |
steps.keyvaluemapoperations.UnsupportedOperationException |
۵۰۰ |
اگر مشخصه |
build |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پراکسی حاوی این خطمشی را مستقر میکنید.
| نام خطا | علت | رفع اشکال |
|---|---|---|
InvalidIndex |
اگر مشخصه index مشخصشده در عنصر <Get> خطمشی «عملیات نقشه مقدار کلید» صفر یا عددی منفی باشد،
استقرار پراکسی API ناموفق خواهد بود. شاخص از
1 شروع میشود، بنابراین شاخص صفر یا عدد صحیح منفی نامعتبر درنظر گرفته میشود.
|
build |
KeyIsMissing |
این خطا زمانی رخ میدهد که عنصر <Key> بهطور کامل وجود نداشته باشد یا عنصر <Parameter> در عنصر <Key> در زیر <Entry> عنصر <InitialEntries> خطمشی «عملیات نقشه مقدار کلید» وجود نداشته باشد.
|
build |
ValueIsMissing |
این خطا زمانی رخ میدهد که عنصر <Value> در زیر عنصر <Entry>
عنصر <InitialEntries> در خطمشی «عملیات نقشه مقدار کلید» وجود نداشته باشد. |
build |
طرحوارهها
یادداشتهای استفاده
برای نمای کلی نقشههای مقدار کلیدی، به کار با نقشههای مقدار کلیدی مراجعه کنید.
فروشگاه نقشه مقدار کلید یک سازوکار ماندگاری سبکوزن برای دادههای قالببندیشده بهعنوان
جفتهای کلید/مقدار ارائه میدهد. میتوانید ازطریق خطمشیها یا کد در زمان اجرا به این موارد دسترسی داشته باشید. نقشه حاوی هرگونه
داده دلخواه در قالب key=value است.
برای مثال localhost=127.0.0.1، zip_code=94110، یا
first_name=felix. در مثال اول، localhost یک کلید است و
127.0.0.1 یک مقدار است. هر جفت کلید/مقدار بهعنوان ورودی در نقشه مقدار کلید ذخیره میشود. نقشه مقدار کلیدی میتواند ورودیهای زیادی را ذخیره کند.
در اینجا نمونهای از استفاده از نقشههای مقدار کلید آورده شده است. فرض کنید باید فهرستی از نشانیهای IP
مرتبط با محیطهای مختلف زیرینه
را ذخیره کنید. میتوانید نقشه مقدار کلیدی بهنام ipAddresses ایجاد کنید که حاوی
فهرستی از جفتهای کلید/مقدار بهعنوان ورودی باشد. برای مثال، این JSON میتواند چنین نقشهای را نشان دهد:
{
"entry" : [ {
"name" : "Development",
"value" : "65.87.18.18"
}, {
"name" : "Staging",
"value" : "65.87.18.22"
} ],
"name" : "ipAddresses"
}میتوانید از این ساختار برای ایجاد فروشگاه نشانیهای IP استفاده کنید که در زمان اجرا توسط خطمشیها برای اعمال فهرست مجاز IP یا فهرست غیرمجاز IP، برای انتخاب پویا نشانی مقصد زیرینه، و غیره استفاده شود. معمولاً از خطمشی KeyValueMapOperations برای ذخیره یا بازیابی اطلاعات بلندمدت استفاده میشود که باید در چندین تراکنش درخواست/پاسخ مجدداً استفاده شود.
نقشههای کلید/مقدار را میتوان ازطریق خطمشی KeyValueMapOperations یا مستقیماً ازطریق میانای برنامهسازی کاربردی مدیریت Apigee Edge دستکاری کرد. برای جزئیات مربوط به میانای برنامهسازی کاربردی نقشههای کلید/مقدار سازمان، به مرجع میانای برنامهسازی کاربردی مدیریت مراجعه کنید. میتوانید از API برای مواردی مثل بارگذاری مجموعههای داده بزرگ در فروشگاه کلید/مقدار، یا ایجاد کردن دستورگان برای مدیریت ورودیهای نقشه کلید/مقدار استفاده کنید. قبلاز دسترسی به آن با خطمشی KeyValueMapOperations، باید با API نقشه کلید/مقدار ایجاد کنید.
مشخص کردن و بازیابی نامهای کلید
با عناصر <Parameter> و <Value> میتوانید
مقدار ثابتی را مشخص کنید (مقدار بین برچسبهای باز و بسته است) یا از
مشخصه ref برای مشخص کردن نام متغیری که مقدار آن باید در
زمان اجرا استفاده شود استفاده کنید.
عنصر «پارامتر» شایسته ذکر ویژه است، زیرا نام کلیدی را که ایجاد میشود و همچنین نام کلیدی را که میخواهید بازیابی یا حذف کنید تعیین میکند. در زیر دو مثال آورده شده است. اولی نام کلید را بهصورت تحتاللفظی مشخص میکند و دومی نام کلید را بااستفاده از متغیر مشخص میکند. فرض کنیم از موارد زیر برای ایجاد کلیدها در 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"/>.