คุณกำลังดูเอกสารประกอบ 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ข้อความไฮไลต์ จะกำหนดพารามิเตอร์ที่ระบุ อินพุตสตริง เอาต์พุต และสิ่งที่ต้องทำกับอินพุต
นโยบาย 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>
ขั้นตอนที่แชร์ของ
default
ต่อไปนี้มีนโยบาย JavaScriptSharedStringFunctions
ที่จะดำเนินการเมื่อมีการเรียกใช้โฟลว์ที่แชร์จากนโยบาย Flowcallout<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
ในขั้นตอนที่แชร์ นโยบาย 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>
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);
- การดำเนินการจะย้อนกลับจากนโยบาย 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>
<FlowCallout> แอตทริบิวต์
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
<SharedFlowBundle> องค์ประกอบ
ระบุชื่อของโฟลว์ที่แชร์ที่จะเรียกใช้ ค่าขององค์ประกอบนี้ควรเหมือนกับ ของแอตทริบิวต์ชื่อองค์ประกอบ SharedFlowBundle เป้าหมาย
<SharedFlowBundle/>
ตัวอย่างที่ง่ายที่สุดคือคุณตั้งชื่อขั้นตอนที่แชร์ว่าเป็นค่าของ
กล่าวคือ ค่าขององค์ประกอบนี้ต้องเหมือนกับ name
ของขั้นตอนที่แชร์
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
ค่าเริ่มต้น | ไม่มี |
การตรวจหาบุคคล |
ต้องระบุ |
ประเภท | ไม่มี |
Attributes
ไม่มี
<Parameter> องค์ประกอบ
ระบุพารามิเตอร์และค่า (หรือแหล่งที่มาของค่า) ที่จะส่งผ่านเป็นตัวแปรไปยังขั้นตอนที่ใช้ร่วมกันที่เรียกใช้โดยพารามิเตอร์นี้
เมื่อใช้พารามิเตอร์ คุณจะสามารถระบุค่า (หรือตัวแปรที่มีค่า) ที่ควร ที่ส่งไปยังขั้นตอนที่แชร์ซึ่งนโยบายเรียกใช้ แนวคิดนี้คล้ายกับการระบุ ในการเรียกฟังก์ชัน เช่นเดียวกับพารามิเตอร์ฟังก์ชัน ค่าของพารามิเตอร์ 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 | ค่าที่จะใช้ในตัวแปรรันไทม์ที่สร้างด้วยพารามิเตอร์นี้ ละเว้นแอตทริบิวต์นี้หาก คุณระบุชื่อของตัวแปรที่ควรเป็นแหล่งที่มาของค่า | ไม่มี | ไม่บังคับ | สตริง |
<Parameters> องค์ประกอบ
ระบุชุดขององค์ประกอบ <Parameter> ที่จะส่งเป็นตัวแปรไปยังโฟลว์ที่แชร์ซึ่งเรียกใช้โดยพารามิเตอร์นี้
ไวยากรณ์
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
ค่าเริ่มต้น | ไม่มี |
การตรวจหาบุคคล |
ไม่บังคับ |
ประเภท | ไม่มี |
Attributes
ไม่มี
สคีมา
ตัวแปรโฟลว์
ตัวแปรโฟลว์จะเปิดใช้ลักษณะการทำงานแบบไดนามิกของนโยบายและโฟลว์ขณะรันไทม์ โดยอิงตาม HTTP ส่วนหัว เนื้อหาข้อความ หรือบริบทโฟลว์ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรโฟลว์ได้ที่ ข้อมูลอ้างอิงตัวแปร
ตัวแปร | คำอธิบาย |
---|---|
|
ขอบเขต: ระหว่างการดำเนินการของขั้นตอนที่แชร์ ค่าของแอตทริบิวต์ชื่อของขั้นตอนที่แชร์ |
|
ขอบเขต: ระหว่างดำเนินการตามโฟลว์ที่แชร์ที่แนบกับโฟลว์
ฮุก ชื่อของฮุกโฟลว์ |
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้อธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กำหนดเมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
flow.SharedFlowNotFound |
500 | ไม่มีโฟลว์ที่แชร์ หรือมีโฟลว์ที่แชร์อยู่แต่ไม่ได้ใช้งาน | build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ไม่มีข้อมูล
หัวข้อที่เกี่ยวข้อง
- การสร้างขั้นตอนที่ใช้ร่วมกัน: นำมาใช้ซ้ำได้ ขั้นตอนที่แชร์
- การเรียกใช้โฟลว์ที่แชร์ในพร็อกซีหลายรายการ: การแนบขั้นตอนที่แชร์โดยใช้ฮุกโฟลว์