นโยบายข้อความไฮไลต์สำหรับโฟลว์

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

ใช้นโยบาย Flowข้อความไฮไลต์ เพื่อเรียกโฟลว์ที่แชร์จากพร็อกซี API หรืออื่นๆ ขั้นตอนที่แชร์

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

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

ตัวอย่าง

ยืนยันคีย์ API ในขั้นตอนที่แชร์

ในตัวอย่างนี้ เราจะใช้ขั้นตอนที่แชร์เพื่อทำงานเกี่ยวกับความปลอดภัยทั่วไป ที่นี่ ขั้นตอนที่แชร์จะตรวจสอบคีย์ API พร็อกซี API และขั้นตอนอื่นๆ ที่แชร์จะใช้ Flowข้อความไฮไลต์ ได้ นโยบายในการเรียกเข้าสู่ขั้นตอนที่แชร์นี้

คำจำกัดความของโฟลว์ที่แชร์ต่อไปนี้มีนโยบาย Verify-API-Key ที่ดำเนินการ เมื่อมีการเรียกใช้โฟลว์ที่แชร์จากนโยบาย FlowCall ในพร็อกซี API

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SharedFlow name="default">
    <Step>
        <Name>Verify-API-Key</Name>
    </Step>
</SharedFlow>

นโยบาย VerifyAPIKey ภายในขั้นตอนที่แชร์ก่อนหน้านี้จะดึงค่าคีย์และ เพื่อยืนยัน

<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key">
    <DisplayName>Verify API Key</DisplayName>
    <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

นโยบาย Flowข้อความไฮไลต์ ต่อไปนี้ซึ่งใช้ในพร็อกซี API เรียกใช้โฟลว์ที่แชร์ก่อนหน้าไปยัง ยืนยันคีย์ API กลุ่มขั้นตอนที่แชร์ของ verify-apikey-shared (ไม่ได้แสดงที่นี่) กำหนดค่าขั้นตอนที่แชร์ในลักษณะที่แพ็กเกจ APIProxy กำหนดค่าพร็อกซี

<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
    <DisplayName>Auth Flow Callout</DisplayName>
    <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle>
</FlowCallout>

ส่งต่อพารามิเตอร์ไปยังขั้นตอนที่แชร์

ตัวอย่างนี้แสดงวิธีส่งพารามิเตอร์จากนโยบาย Flowข้อความไฮไลต์ ไปยัง ขั้นตอนที่แชร์ ในตัวอย่างนี้ นโยบาย Flowข้อความไฮไลต์ เรียกไปยังขั้นตอนที่แชร์ซึ่งออกแบบมาเพื่อดำเนินการโดยทั่วไป ของฟังก์ชันการจัดการสตริง ขั้นตอนที่แชร์มี JavaScript ที่เชื่อมโยงอินพุตเข้าด้วยกัน ไม่ว่าอินพุตจะเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ หรือทั้งสองอย่างก็ได้ นโยบาย Flowข้อความไฮไลต์ จะกำหนดพารามิเตอร์ที่ระบุ อินพุตสตริง เอาต์พุต และสิ่งที่ต้องทำกับอินพุต

  1. นโยบาย Flowข้อความไฮไลต์ ของ String-Handler เรียกใช้ขั้นตอนที่แชร์ พารามิเตอร์ที่ส่งผ่านที่ระบุตัวแปรเพื่อจัดเก็บเอาต์พุตของขั้นตอนที่แชร์ และขั้นตอนใดที่แชร์ และอินพุตที่จะใช้ (ในที่นี้คือสัญพจน์ของสตริง แต่ก็อาจเป็น ตัวแปรโฟลว์) องค์ประกอบ Parameter ระบุชื่อและค่าของตัวแปร เพื่อสร้างรันไทม์ ขั้นตอนที่แชร์จะดึงข้อมูลตัวแปรเหล่านี้เพื่อใช้ในโค้ดของตัวเองได้

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler">
      <DisplayName>String Handler</DisplayName>
      <Parameters>
        <Parameter name="input">Gladys Kravitz</Parameter>
        <Parameter name="operations">concatenate tolowercase</Parameter>
        <Parameter name="outputVariable">string.handler.output</Parameter>
      </Parameters>
      <SharedFlowBundle>StringHandler</SharedFlowBundle>
    </FlowCallout>
    
  2. ขั้นตอนที่แชร์ของ default ต่อไปนี้มีนโยบาย JavaScript SharedStringFunctions ที่จะดำเนินการเมื่อมีการเรียกใช้โฟลว์ที่แชร์จากนโยบาย Flowcallout

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. ในขั้นตอนที่แชร์ นโยบาย JavaScript ของ SharedStringFunctions ต่อไปนี้ ระบุไฟล์ JavaScript SharedStringFunctions.js กับโค้ดที่จะดำเนินการ

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="SharedStringFunctions">
      <DisplayName>SharedStringFunctions</DisplayName> <Properties/>
      <ResourceURL>jsc://SharedStringFunctions.js</ResourceURL>
    </Javascript>
  4. JavaScript ที่ SharedStringFunctions.js ต่อไปนี้ทำงานจาก นโยบาย JavaScript SharedStringFunctions รายการ สคริปต์นี้ดึงค่าจาก ตัวแปรที่สร้างจากองค์ประกอบ Parameter ของนโยบายโฟลว์ข้อความไฮไลต์

    // Input value from the calling API proxy.
    var handledString = context.getVariable("input");
    // Variable to use for output from this script.
    var outputVariable = context.getVariable("outputVariable");
    // A space-separated list of things to do to the input string.
    // Convert to lower case to handle unintentional capitals in configuration.
    var operation = context.getVariable("operations").toLowerCase();
    
    // If "lowercase" was given as an operation, convert the input to lowercase.
    if (operation.includes("tolowercase")) {
        handledString = handledString.toLowerCase();
    }
    
    // If "concatenate" was given as an operation, concatenate the input.
    if (operation.includes("concatenate")) {
        handledString = handledString.replace(/\s+/g, '');
    }
    // Assign the resulting string to the output variable specified by
    // the calling API proxy.
    context.setVariable(outputVariable, handledString);
  5. การดำเนินการจะย้อนกลับจากนโยบาย JavaScript ไปยังขั้นตอนที่แชร์ จากนั้นไปยัง นโยบาย Flowข้อความไฮไลต์ ในพร็อกซี API ต้นทาง

การอ้างอิงองค์ประกอบ

ต่อไปนี้คือองค์ประกอบและแอตทริบิวต์ที่คุณสามารถกำหนดค่าในนโยบายนี้

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle>
</FlowCallout>

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

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">

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

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

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

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

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

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

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

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

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

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

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

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

เท็จ เลิกใช้

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

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

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

ไม่มี

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

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

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

ระบุชื่อของโฟลว์ที่แชร์ที่จะเรียกใช้ ค่าขององค์ประกอบนี้ควรเหมือนกับ ของแอตทริบิวต์ชื่อองค์ประกอบ SharedFlowBundle เป้าหมาย

<SharedFlowBundle/>

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

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล

ต้องระบุ

ประเภท ไม่มี

Attributes

ไม่มี

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

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

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

พารามิเตอร์ Flowข้อความไฮไลต์ จะปรากฏระหว่างการดำเนินการของโฟลว์ที่แชร์เท่านั้น

ไวยากรณ์

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

<!- A literal value in an attribute. --/>
<Parameter name="parameter-name" value='parameter-value' />
<!- A reference to a variable in an attribute. --/>
<Parameter name="parameter-name" ref='source-variable-name' />
<!- A literal value in the element content. --/>
<Parameter name="parameter-name">parameter-value</Parameter>
<!- An reference to an attribute in the element content. --/>
<Parameter name="parameter-name">{source-variable-name}</Parameter>

ตัวอย่าง

พารามิเตอร์การส่งของนโยบาย Flowcallout ของ String-Handler นี้ซึ่งระบุตำแหน่ง เพื่อจัดเก็บเอาต์พุตของขั้นตอนที่แชร์และอินพุตที่จะใช้ องค์ประกอบ Parameter ระบุชื่อและค่าของตัวแปรเพื่อสร้างรันไทม์ ขั้นตอนที่แชร์จะเรียกข้อมูลได้ ตัวแปรเหล่านี้เพื่อใช้ในโค้ดของตัวเอง

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler">
  <DisplayName>String Handler</DisplayName>
  <Parameters>
    <Parameter name="input">Gladys Kravitz</Parameter>
    <Parameter name="outputVariable">string.handler.output</Parameter>
  </Parameters>
  <SharedFlowBundle>StringHandler</SharedFlowBundle>
</FlowCallout>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล

ต้องระบุ

ประเภท ไม่มี

Attributes

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

ตัวแปรที่ มีค่าที่จะใช้ขณะรันไทม์ ละเว้นแอตทริบิวต์นี้ในกรณีต่อไปนี้ ระบุค่าลิเทอรัลที่จะใช้

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

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

ระบุชุดขององค์ประกอบ &lt;Parameter&gt; ที่จะส่งเป็นตัวแปรไปยังโฟลว์ที่แชร์ซึ่งเรียกใช้โดยพารามิเตอร์นี้

ไวยากรณ์

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล

ไม่บังคับ

ประเภท ไม่มี

Attributes

ไม่มี

สคีมา

ตัวแปรโฟลว์

ตัวแปรโฟลว์จะเปิดใช้ลักษณะการทำงานแบบไดนามิกของนโยบายและโฟลว์ขณะรันไทม์ โดยอิงตาม HTTP ส่วนหัว เนื้อหาข้อความ หรือบริบทโฟลว์ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรโฟลว์ได้ที่ ข้อมูลอ้างอิงตัวแปร

ตัวแปร คำอธิบาย

apigee.edge.sharedflow.name

ขอบเขต: ระหว่างการดำเนินการของขั้นตอนที่แชร์
ประเภท: สตริง
สิทธิ์: อ่าน

ค่าของแอตทริบิวต์ชื่อของขั้นตอนที่แชร์

apigee.edge.flowhook.name

ขอบเขต: ระหว่างดำเนินการตามโฟลว์ที่แชร์ที่แนบกับโฟลว์ ฮุก
ประเภท: สตริง
สิทธิ์: อ่าน

ชื่อของฮุกโฟลว์

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

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

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

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

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ แก้ไข
flow.SharedFlowNotFound 500 ไม่มีโฟลว์ที่แชร์ หรือมีโฟลว์ที่แชร์อยู่แต่ไม่ได้ใช้งาน

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

ไม่มีข้อมูล

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