นโยบาย KeyValueMapOperations

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

ไอคอนการดำเนินการแมปค่าคีย์จาก Edge UI

อะไร

ให้สิทธิ์เข้าถึงที่เก็บ Key Value Map (KVM) ที่มีอยู่ใน Apigee Edge ตามนโยบาย คุณสามารถจัดเก็บ เรียก และลบออกจากคู่ของคีย์/ค่าโดยการกำหนดค่า นโยบาย KeyValueMapOperations ที่ระบุการดำเนินการ PUT, GET หรือ DELETE (อย่างน้อย 1 การดำเนินการเหล่านี้ต้องดำเนินการตามนโยบาย)

วิดีโอ

ดูข้อมูลเพิ่มเติมเกี่ยวกับ KVM ได้ในวิดีโอต่อไปนี้

วิดีโอ คำอธิบาย
ทำไมจึงต้องใช้คีย์-ค่า Maps ดูเหตุผลที่คุณต้องการ KVM และวิธีการทำงาน
สร้าง KVM โดยใช้ UI และเรียกข้อมูล KVM ขณะรันไทม์ สร้าง KVM, ดึงค่าโดยใช้นโยบาย KVM และแทรกค่าลงใน API โดยใช้ตัวแปรโฟลว์
สร้างและอัปเดต KVM ที่รันไทม์ของ API สร้าง KVM ที่รันไทม์ของ API โดยใช้นโยบาย KVM
แคช KVM ไปยัง เพิ่มประสิทธิภาพ ปรับปรุงประสิทธิภาพของนโยบาย KVM โดยการแคชข้อมูล
ร้านค้าที่เข้ารหัส KVM จัดเก็บข้อมูลที่ละเอียดอ่อนใน KVM ในรูปแบบที่เข้ารหัสและเรียกข้อมูลค่าที่ โดยใช้นโยบาย KVM และตัวแปรส่วนตัว
จัดการการเข้าถึง โดยใช้ขอบเขต KVM จำกัด KVM เฉพาะองค์กร สภาพแวดล้อม พร็อกซี API หรือการแก้ไขพร็อกซี API โดยใช้ KVM แอตทริบิวต์ขอบเขตนโยบาย
ลบ KVM รายการในรันไทม์ของ API ลบรายการ KVM ที่รันไทม์ของ API โดยใช้การดำเนินการลบนโยบาย KVM

ตัวอย่าง

PUT KVM ที่มีลิเทอรัล

เมื่อนโยบายต่อไปนี้ทำงาน จะสร้าง KVM ที่เข้ารหัสชื่อ FooKVM จากนั้นสร้างคีย์ชื่อ FooKey_1 ด้วย มีการตั้งค่า 2 ค่าด้วยสตริงตามตัวอักษร 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 ได้ในส่วนการจัดการ UI ภายใต้ API > การกำหนดค่าสภาพแวดล้อม > Key Value Maps KVM ที่แสดงในหน้านั้น ทั้งหมดกำหนดขอบเขตตามสภาพแวดล้อมที่เลือก

รับ KVM จากลิเทอรัล

นโยบายนี้จะพิจารณาแมป FooKVM จากตัวอย่างก่อนหน้านี้ ค่าที่ 2 (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>

PUT KVM ที่มีตัวแปร

ตัวอย่างง่ายๆ ของแมปคีย์-ค่าที่มีประโยชน์คือบริการย่อ URL แมปค่าคีย์ สามารถกำหนดค่าให้จัดเก็บ URL แบบย่อกับ URL แบบเต็มที่เกี่ยวข้อง

ตัวอย่างนโยบายนี้จะสร้างแมปค่าคีย์ นโยบาย PUT 1 คีย์ที่มีค่าที่เชื่อมโยงกัน 2 ค่า ลงในการแมปคีย์/ค่าที่ชื่อว่า "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 คำขอที่แฮชจะถูกสร้างขึ้นโดยโค้ด (JavaScript หรือ Java สำหรับ ตัวอย่าง) แล้วจัดเก็บไว้ในตัวแปรนี้ ซึ่งนโยบาย KeyValueMapOperations สามารถเข้าถึงได้ ได้

สำหรับแต่ละคีย์ requesturl.hashed ระบบจะจัดเก็บ 2 ค่าดังนี้

  • เนื้อหาของตัวแปรที่กำหนดเองชื่อ 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 service. แมปค่าคีย์ สามารถกำหนดค่าให้จัดเก็บ 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 สำหรับข้อมูลเกี่ยวกับการสร้างแมปค่าคีย์ที่เข้ารหัส โปรดดูส่วน "สร้าง" หัวข้อของการแมปคีย์/ค่า Management 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>

&lt;KeyValueMapOperations&gt; แอตทริบิวต์

ตัวอย่างต่อไปนี้แสดงแอตทริบิวต์ในแท็ก <KeyValueMapOperations>

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

ตารางต่อไปนี้อธิบายแอตทริบิวต์เฉพาะของแท็ก <KeyValueMapOperations>

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
mapIdentifier

ระบุตัวระบุที่จะใช้เมื่อเข้าถึงแผนที่ที่สร้างโดย หรือใน UI การจัดการ

ชื่อ KVM จะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่กับ Apigee Edge สำหรับ Public Cloud ตัวอย่างเช่น foobar ต่างจาก FooBar

หากคุณยกเว้นแอตทริบิวต์นี้ ระบบจะใช้ KVM ที่ชื่อ kvmap

ภายในขอบเขตองค์กร/สภาพแวดล้อม/apiproxy คุณสามารถใช้ mapIdentifier เพื่อระบุชื่อแผนที่ของคุณเอง

ไม่มี ไม่บังคับ

ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
name

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name สามารถ ประกอบด้วยตัวอักษร ตัวเลข การเว้นวรรค ขีดกลางสั้น ขีดล่าง และจุด ค่านี้ไม่สามารถ เกิน 255 อักขระ

(ไม่บังคับ) ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

ไม่มี ต้องระบุ
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว เป็นเรื่องปกติ พฤติกรรมสำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้ดำเนินการตามขั้นตอนได้อย่างต่อเนื่องแม้จะมีนโยบายแล้วก็ตาม ล้มเหลว

เท็จ ไม่บังคับ
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อปิดนโยบาย นโยบายจะไม่ บังคับใช้ แม้ว่าจะยังคงแนบกับขั้นตอน

จริง ไม่บังคับ
async

แอตทริบิวต์นี้เลิกใช้งานแล้ว

เท็จ เลิกใช้

&lt;DisplayName&gt; องค์ประกอบ

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น

ไม่มี

หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ name ของนโยบายจะเป็น

การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง

&lt;Delete&gt; องค์ประกอบ

ลบคู่คีย์/ค่าที่ระบุ อย่างน้อย 1 คนจาก <Get> ต้องใช้ <Put> หรือ <Delete>

โปรดระบุชื่อของ KVM ด้วยแอตทริบิวต์ mapIdentifier ในองค์ประกอบระดับบน เช่น

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ต้องระบุหากไม่มี <Get> หรือ <Put>
ประเภท ไม่มี

&lt;Entry&gt; องค์ประกอบ

ค่าตั้งต้นสำหรับแมปค่าคีย์ ซึ่งมีการป้อนข้อมูลในแมปค่าคีย์เมื่อ ได้เริ่มต้นแล้ว

สำหรับ Edge for Public Cloud ขนาดของคีย์จะจำกัดอยู่ที่ 2 KB เช่น

<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>
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ไม่บังคับ
ประเภท ไม่มี

&lt;ExclusiveCache&gt; องค์ประกอบ

เลิกใช้งานแล้ว โปรดใช้องค์ประกอบ <Scope> แทน

&lt;ExpiryTimeInSecs&gt; องค์ประกอบ

ระบุระยะเวลาเป็นวินาทีหลังจากที่ Edge รีเฟรชค่าที่แคชไว้จาก KVM ที่ระบุ

ค่า 0 หรือ -1 หรือไม่รวมองค์ประกอบนี้ หมายความว่าค่าเริ่มต้น 300 วินาทีคือ เช่น

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
ค่าเริ่มต้น 300 (5 นาที)
การมีบุคคลอยู่ ไม่บังคับ
ประเภท จำนวนเต็ม

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

  1. การดำเนินการ GET จะดึงค่าของ "rating" ซึ่งจะเพิ่มค่า "10" เพื่อแคช <ExpiryTimeInSecs> ในนโยบายเท่ากับ 60
  2. หลังจากนั้น 30 วินาที นโยบาย GET จะทำงานอีกครั้งและเรียกข้อมูล "10" ออกจากแคช
  3. หลังจากนั้น 5 วินาที นโยบาย PUT จะอัปเดตค่าของ "rating" "8" และ <ExpiryTimeInSecs> ในนโยบาย PUT คือ 20 ระบบจะล้างแคชทันที รีเฟรชด้วยค่าใหม่ ซึ่งตอนนี้ตั้งไว้ให้คงอยู่ในแคชเป็นเวลา 20 วินาที (หาก PUT แคชที่ถูกสร้างขึ้นโดย GET แรกจะยังคงมีอยู่ใน 30 วินาที จากเวลาเดิม 60 วินาที)
  4. หลังจากนั้น 15 วินาที GET อีกรายการจะเรียกใช้และดึงค่า "8"

&lt;Get&gt; องค์ประกอบ

ดึงค่าของคีย์ที่ระบุ อย่างน้อย 1 คนจาก <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 Store ชื่อผู้กำกับของภาพยนตร์ใหญ่ทุกเรื่อง

คีย์ ค่า
top_movies เจ้าสาวเจ้าสาว,เจ้าพ่อพ่อ,พลเมืองเคน
พลเมือง เคน ออร์สัน เวลส์
เจ้าสาวเจ้าสาว ร็อบ ไรเนอร์
The Godfather ฟรานซิส ฟอร์ด คอปโปลา

นี่คือการกำหนดค่านโยบาย 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

Attributes

ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Get>

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
assignTo

ตัวแปรที่ควรกำหนดค่าที่ดึงมา

หากแมปค่าคีย์มีการเข้ารหัส ให้ขึ้นต้นชื่อ assignTo ด้วย "private." ดังตัวอย่างต่อไปนี้

<Get assignTo="private.myvar">

นโยบายจะแสดงข้อผิดพลาดหากคุณพยายามเรียกแมปค่าคีย์ที่เข้ารหัสโดยไม่มี โดยใช้คำนำหน้า คำนำหน้า ซึ่งจำเป็นสำหรับวัตถุประสงค์ด้านความปลอดภัยขั้นพื้นฐานระหว่าง การแก้ไขข้อบกพร่อง จะซ่อนค่าที่เข้ารหัสจากเซสชันการติดตามและแก้ไขข้อบกพร่องของพร็อกซี API

สำหรับข้อมูลเกี่ยวกับการสร้างแมปค่าคีย์ที่เข้ารหัส โปรดดูส่วน "สร้าง" ของ การจัดการคีย์/ค่า API และการสร้างและ แก้ไขแมปค่าคีย์สภาพแวดล้อม

ไม่มี ต้องระบุ
ดัชนี

หมายเลขดัชนี (ในดัชนีที่อิงตาม 1) ของสินค้าที่จะดึงข้อมูลจากคีย์ที่มีหลายค่า เช่น การระบุ index=1 จะส่งคืนค่าแรกและกำหนดให้ ตัวแปร assignTo ถ้าไม่ได้ระบุค่าดัชนี ค่าทั้งหมดของ รายการนั้นจะกำหนดให้กับตัวแปรเป็น java.util.List

ตัวอย่างเช่น โปรดดู "รับค่าที่เข้ารหัสจาก KVM" แท็บในฟีดลองฟัง

ไม่มี ไม่บังคับ

&lt;InitialEntries&gt; องค์ประกอบ

ค่าตั้งต้นสำหรับแมปค่าคีย์ ซึ่งอยู่ในแมปค่าคีย์เมื่อเริ่มต้น อย่าลืมระบุชื่อของ 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>

เมื่อใช้องค์ประกอบนี้ เมื่อคุณบันทึกนโยบายใน UI การจัดการในเวอร์ชันที่มีการทำให้ใช้งานได้ ของพร็อกซี หรือทำให้แพ็กเกจพร็อกซี API ที่มีนโยบายมีองค์ประกอบนี้ คีย์ จะสร้างขึ้นใน KVM โดยอัตโนมัติ (โดยไม่เข้ารหัส) หากค่าในนโยบายแตกต่างกัน ค่าใน KVM จะถูกเขียนทับเมื่อมีการใช้พร็อกซี ช่วง ระบบจะเพิ่มคีย์/ค่าใหม่ลงใน KVM ที่มีอยู่ควบคู่ไปกับคีย์/ค่าที่มีอยู่

คีย์และค่าที่องค์ประกอบนี้ใส่ต้องเป็นแบบลิเทอรัล ตัวอย่างเช่น องค์ประกอบนี้ไม่รองรับ <Parameter ref="request.queryparam.key">

ขนาดของคีย์ต้องไม่เกิน 2 KB สำหรับทั้ง Edge สำหรับระบบคลาวด์สาธารณะ และ Edge for the Private Can จำกัดค่า KVM ไว้ที่ 2 KB

หากต้องการสร้าง KVM ที่เข้ารหัส ให้ใช้ API การจัดการแผนที่คีย์/ค่า

ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ไม่บังคับ
ประเภท ไม่มี

&lt;Key&gt; องค์ประกอบ

ระบุคีย์ในรายการแมปคีย์/ค่า แต่ละคีย์อาจเป็นการผสมได้ ซึ่งหมายความว่ามากกว่า สามารถใส่พารามิเตอร์ 1 รายการต่อท้ายเพื่อสร้างคีย์ได้ เช่น userID และ ระบบอาจรวม role เข้าด้วยกันเพื่อสร้าง key เช่น

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

ตรวจสอบองค์ประกอบ &lt;Parameter&gt; เพื่อดูข้อมูลเฉพาะเกี่ยวกับวิธี ตั้งชื่อคีย์

เมื่อใช้ Edge for Public Cloud ขนาดของคีย์จะจำกัดอยู่ที่ 2 KB โปรดดูข้อมูลเพิ่มเติมในความแตกต่างระหว่าง Edge สำหรับ Public Cloud API และ Private Cloud API

ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ไม่บังคับ
ประเภท ไม่มี

&lt;Parameter&gt; องค์ประกอบ

ระบุคีย์ในคู่คีย์/ค่า องค์ประกอบนี้จะระบุชื่อเมื่อสร้าง วาง การเรียกข้อมูล หรือลบคู่คีย์/ค่า

คุณระบุชื่อได้โดยใช้สิ่งต่อไปนี้

  • สตริงลิเทอรัล

    <Key>
      <Parameter>literal</Parameter>
    </Key>
    
  • ตัวแปรที่จะดึงขณะรันไทม์โดยใช้แอตทริบิวต์ ref

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
    
  • การอ้างอิงลิเทอรัลและตัวแปร

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

เมื่อองค์ประกอบหลักมีองค์ประกอบพารามิเตอร์หลายรายการ สตริงคีย์ที่มีประสิทธิภาพคือ การต่อค่าของพารามิเตอร์แต่ละตัวเข้าด้วยกันด้วยเครื่องหมายขีดล่าง 2 ขีด ตัวอย่างเช่น ใน จากตัวอย่างข้างต้น หากตัวแปร apiproxy.name มีค่า "abc1" ค่า คีย์ที่มีประสิทธิภาพจะเป็น targeturl__abc1__weight

ไม่ว่าคุณจะได้รับ การอัปเดต หรือลบรายการคีย์/ค่า ชื่อคีย์ต้องตรงกับ ชื่อของคีย์ในแมปค่าคีย์ ดูการระบุและ เรียกดูชื่อคีย์เพื่อเป็นหลักเกณฑ์

ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ต้องระบุ
ประเภท สตริง

Attributes

ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Parameter>

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
อ้างอิง ระบุชื่อของตัวแปรซึ่งมีค่าที่มีชื่อคีย์ที่คุณตรงกันทุกประการ ต้องการสร้าง รับ หรือลบ ไม่มี ต้องระบุหากไม่มีค่าลิเทอรัลระหว่างช่องเปิดและ แท็กปิด ห้ามหากระบุค่าลิเทอรัล

&lt;Put&gt; องค์ประกอบ

เขียนคู่คีย์/ค่าในแมปค่าคีย์ ไม่ว่าแมปค่าคีย์จะมีการเข้ารหัส หรือ ไม่ได้เข้ารหัส หากแมปค่าคีย์ที่ระบุในแอตทริบิวต์ mapIdentifier ใน ไม่มีองค์ประกอบระดับบนสุด แผนที่จะถูกสร้างขึ้นโดยอัตโนมัติ (เป็นแผนที่ไม่ได้เข้ารหัส) หากค่าคีย์ มีการแมปอยู่แล้ว คีย์/ค่าจะถูกเพิ่มลงไป

หากต้องการสร้างแมปค่าคีย์ที่เข้ารหัส ให้ใช้ API การจัดการแผนที่คีย์/ค่า หรือดูหัวข้อการสร้างและแก้ไขแมปค่าคีย์สภาพแวดล้อม เพื่อสร้าง KVM ระดับสภาพแวดล้อมที่เข้ารหัสใน UI

<Put override="false">         
   <Key>             
      <Parameter ref="mykeyvar"/>         
   </Key>         
   <Value ref="myvalvar1"/>     
</Put>
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ต้องระบุหากไม่มี <Get> หรือ <Delete> ปัจจุบัน
ประเภท ไม่มี

Attributes

ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Put>

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
ลบล้าง

หากตั้งค่าเป็น true ระบบจะลบล้างค่าของคีย์

false ไม่บังคับ

&lt;Scope&gt; องค์ประกอบ

กำหนดขอบเขตของการเข้าถึงสำหรับแมปค่าคีย์ ขอบเขตเริ่มต้นคือ environment ซึ่งหมายความว่าโดยค่าเริ่มต้น พร็อกซี API ทั้งหมดจะแชร์รายการแผนที่ ทำงานในสภาพแวดล้อม (เช่น การทดสอบหรือ Prod) หากคุณกำหนดขอบเขตเป็น apiproxy เฉพาะพร็อกซี API ที่เข้าถึงรายการในแมปค่าคีย์เท่านั้น เขียนค่าลงในแผนที่

โปรดทราบว่าเมื่อเข้าถึงแผนที่หรือรายการแผนที่ คุณต้องระบุค่าขอบเขตเดียวกับที่ใช้ เมื่อสร้างแผนที่ขึ้นมา ตัวอย่างเช่น หากแผนที่สร้างขึ้นโดยมีขอบเขตของ apiproxy คุณต้องใช้ขอบเขต apiproxy เมื่อดึงข้อมูลค่า ทำการเปลี่ยนแปลง หรือลบรายการ

<Scope>environment</Scope>
ค่าเริ่มต้น environment
การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง
ค่าที่ถูกต้อง:
  • organization
  • environment
  • apiproxy
  • policy (การแก้ไขพร็อกซี API)

&lt;Value&gt; องค์ประกอบ

ระบุค่าของคีย์ คุณสามารถระบุค่าเป็นสตริงตามตัวอักษรหรือใช้ แอตทริบิวต์ 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> หลายรายการเพื่อระบุหลายส่วนได้ด้วย ระบบจะรวมค่าต่างๆ เข้าด้วยกันเมื่อเรียกใช้

ในตัวอย่างต่อไปนี้ จะมีการเพิ่ม 2 คีย์ลงใน 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>

ในตัวอย่างต่อไปนี้ จะมีการสร้างคีย์ 1 คีย์ที่มี 2 ค่า สมมติว่าองค์กร ชื่อคือ 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>
ค่าเริ่มต้น ไม่มี
การมีบุคคลอยู่ ต้องระบุ
ประเภท สตริง

Attributes

ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Value>

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
อ้างอิง ระบุชื่อของตัวแปรที่มีค่าซึ่งมีค่าคีย์ที่คุณต้องการ ตั้งค่า ไม่มี ต้องระบุหากไม่มีค่าลิเทอรัลระหว่างช่องเปิดและ แท็กปิด ห้ามหากระบุค่าลิเทอรัล

ข้อมูลอ้างอิงข้อผิดพลาด

ข้อผิดพลาดที่แสดงผลจากนโยบาย Edge จะมีรูปแบบที่สอดคล้องกันตามที่อธิบายไว้ในข้อมูลอ้างอิงรหัสข้อผิดพลาด

ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ แก้ไข
steps.keyvaluemapoperations.SetVariableFailed 500

ข้อผิดพลาดนี้เกิดขึ้นหากคุณพยายามเรียกค่าจากแมปค่าคีย์ที่เข้ารหัส แล้วตั้งค่าเป็นตัวแปรที่มีชื่อไม่ได้ขึ้นต้นด้วย private คำนำหน้าซึ่งจำเป็นสำหรับวัตถุประสงค์ด้านความปลอดภัยขั้นพื้นฐานระหว่างการแก้ไขข้อบกพร่อง จะซ่อนค่าที่เข้ารหัสจากการติดตามพร็อกซี API และเซสชันการแก้ไขข้อบกพร่อง

steps.keyvaluemapoperations.UnsupportedOperationException 500

ข้อผิดพลาดนี้เกิดขึ้นหากมีการตั้งค่าแอตทริบิวต์ mapIdentifier เป็นสตริงว่างเปล่าในนโยบายการดำเนินการแมปค่าคีย์

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
InvalidIndex หากแอตทริบิวต์ index ที่ระบุในองค์ประกอบ <Get> ของนโยบายการดำเนินการแมปค่าคีย์เป็น 0 หรือเป็นตัวเลขลบ จะทำให้การทำให้พร็อกซี API ใช้งานได้ไม่สำเร็จ ดัชนีจะเริ่มต้นจาก 1 ดังนั้นดัชนีที่เป็นจำนวนเต็ม 0 หรือจำนวนเต็มลบจึงถือว่าไม่ถูกต้อง
KeyIsMissing ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Key> หายไปทั้งหมด หรือองค์ประกอบ <Parameter> หายไปภายในองค์ประกอบ <Key> ภายใต้องค์ประกอบ <Entry> ขององค์ประกอบ <InitialEntries> ของนโยบายการดำเนินการแมปค่าคีย์
ValueIsMissing ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Value> หายไปใต้องค์ประกอบ <Entry> ขององค์ประกอบ <InitialEntries> ของนโยบายการดำเนินการแมปค่าคีย์

สคีมา

หมายเหตุการใช้งาน

โปรดดูภาพรวมของการแมปค่าคีย์ที่หัวข้อการใช้งานแมปค่าคีย์

ที่จัดเก็บการแมปค่าที่สำคัญมีกลไกการคงอยู่ขนาดเล็กสำหรับข้อมูลที่มีการจัดรูปแบบเป็น คู่คีย์/ค่า โดยคุณจะเข้าถึงได้ขณะรันไทม์ผ่านนโยบายหรือโค้ด แผนที่ประกอบด้วย ข้อมูลที่กําหนดเองในรูปแบบ 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 เพื่อเลือกเป้าหมายแบ็กเอนด์แบบไดนามิก ที่อยู่ และอื่นๆ โดยปกติแล้ว ระบบจะใช้นโยบาย KeyValueMapOperations เพื่อจัดเก็บหรือเรียกข้อมูล ข้อมูลที่ใช้ได้นานซึ่งจำเป็นต้องนำมาใช้ซ้ำในธุรกรรมการขอ/ตอบกลับหลายครั้ง

สามารถจัดการแมปคีย์/ค่าผ่านนโยบาย KeyValueMapOperations หรือทำโดยตรงผ่าน API การจัดการ Apigee Edge โปรดดูรายละเอียดเกี่ยวกับ API การแมปคีย์/ค่าขององค์กรในข้อมูลอ้างอิงของ API การจัดการ คุณสามารถใช้ API เพื่อ เช่น อัปโหลดชุดข้อมูลขนาดใหญ่ไปยังแหล่งเก็บคีย์/ค่า หรือสร้างสคริปต์เพื่อจัดการคีย์/ค่า รายการแผนที่ คุณจะต้องสร้างการแมปคีย์/ค่าด้วย API ก่อนเข้าถึงด้วย นโยบาย KeyValueMapOperations

การระบุและเรียกข้อมูลชื่อคีย์

เมื่อใช้องค์ประกอบ <Parameter> และ <Value> คุณจะทำสิ่งต่อไปนี้ได้ ระบุค่าลิเทอรัล (โดยที่ค่าอยู่ระหว่างแท็กเปิดและแท็กปิด) หรือใช้ แอตทริบิวต์ ref เพื่อระบุชื่อของตัวแปรที่ควรใช้ค่า รันไทม์

องค์ประกอบพารามิเตอร์ควรมีการกล่าวถึงพิเศษ เนื่องจากเป็นตัวกำหนดชื่อของคีย์ รวมทั้งชื่อคีย์ที่คุณต้องการเรียกหรือลบ ต่อไปนี้เป็นตัวอย่าง 2 ตัวอย่าง รายการที่ 1 ระบุชื่อคีย์ตามตัวอักษร ส่วนรายการที่สองระบุชื่อคีย์โดยใช้ตัวแปร สมมติว่ามีการใช้ตัวอย่างต่อไปนี้เพื่อสร้างคีย์ใน KVM

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

ในอินสแตนซ์แรก ค่าลิเทอรัลของ "key_name_literal" ถูกจัดเก็บไว้ใน KVM เป็นคีย์ ชื่อ ในอินสแตนซ์ที่ 2 ค่าที่อยู่ใน key.name.variable จะกลายเป็น ชื่อของคีย์ใน KVM ตัวอย่างเช่น ถ้า key.name.variable มีพารามิเตอร์ ค่า foo คีย์จะมีชื่อว่า "foo"

เมื่อคุณต้องการเรียกคีย์และค่าคีย์ด้วยการดำเนินการ GET (หรือลบด้วย DELETE) <พารามิเตอร์> ต้องตรงกับชื่อคีย์ใน KVM สำหรับ เช่น ถ้าชื่อคีย์ใน KVM คือ "foo" คุณอาจระบุค่าลิเทอรัลด้วย <Parameter>foo</Parameter> หรือระบุตัวแปรที่มี ค่า "foo" ดังนี้ <Parameter ref="variable.containing.foo"/>

หัวข้อที่เกี่ยวข้อง