คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบเกี่ยวกับ Apigee Xข้อมูล
หัวข้อนี้อธิบายโครงสร้างของข้อผิดพลาดด้านนโยบายและประเภทของตัวแปรการไหลที่ตั้งค่าไว้เมื่อเกิดข้อผิดพลาดด้านนโยบาย ข้อมูลนี้มีความสําคัญหากคุณกําลังออกแบบและติดตั้งใช้งานการจัดการข้อบกพร่องสําหรับพร็อกซี
หัวข้อนี้ถือว่าคุณมีความเข้าใจทั่วไปเกี่ยวกับวิธีการทำงานของการจัดการข้อบกพร่องใน Edge และคุณทราบกฎข้อบกพร่อง หากต้องการการตรวจสอบ โปรดดูการจัดการข้อผิดพลาด ข้อมูลที่นี่ยังช่วยคุณในการไปยังส่วนต่างๆ และใช้ข้อมูลอ้างอิงข้อผิดพลาดด้านนโยบายด้วย
เกี่ยวกับการตอบกลับข้อผิดพลาดนโยบายเริ่มต้น
เมื่อนโยบายแสดงข้อผิดพลาด Edge จะเข้าสู่ขั้นตอนการแสดงข้อผิดพลาดและสร้างข้อความแสดงข้อผิดพลาดทันที ข้อความที่ระบบสร้างขึ้นนี้เป็นออบเจ็กต์ JSON ที่มีข้อมูล 2 รายการ ได้แก่ errorcode และ faultstring
เช่น
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse" } }
เรามาแยกโครงสร้างข้อความแสดงข้อผิดพลาดนี้อย่างรวดเร็วกัน
errorcode ประกอบด้วยคำนำหน้าและชื่อข้อผิดพลาด ดังนี้ [prefix].[error_name]
ในตัวอย่างข้างต้น "steps.extractvariables
" คือคำนำหน้าและ SourceMessageNotAvailable
คือชื่อข้อผิดพลาด ส่วนนำหน้าจะบอกประเภทนโยบายที่ทำให้เกิดข้อผิดพลาด ในตัวอย่างด้านบน คุณจะทราบได้ว่านโยบายการดึงข้อมูลตัวแปรสร้างข้อผิดพลาดและชื่อข้อผิดพลาดคือ SourceMessageNotAvailable
faultstring จะมีคําอธิบายข้อผิดพลาด โดยปกติสตริงข้อผิดพลาดจะมีคำแนะนำที่จะช่วยให้คุณพบปัญหาที่เจาะจงที่ทำให้เกิดข้อผิดพลาด เช่น ชื่อของนโยบาย ชื่อของตัวแปรที่ยังไม่ได้แก้ไข หรืออะไรก็ตามที่ทำให้เกิดข้อผิดพลาด ตัวอย่างเช่น ในข้อความแสดงข้อผิดพลาดข้างต้น "foo
" คือชื่อตัวแปรข้อความที่ยังไม่ได้รับการแก้ไขซึ่งอ้างอิงในนโยบาย และ "ParseJsonResponse
" คือชื่อนโยบายที่ทริกเกอร์ข้อผิดพลาด
ตัวแปรที่เฉพาะต่อข้อผิดพลาดของนโยบาย
เมื่อมีการทริกเกอร์ข้อผิดพลาดของนโยบาย ระบบจะเติมค่าตัวแปรของขั้นตอนเฉพาะข้อผิดพลาดบางอย่าง ตัวแปรเหล่านี้มีประโยชน์อย่างยิ่งในการจัดการความผิดพลาด ตามที่อธิบายไว้ในหัวข้อการจัดการข้อบกพร่อง แนวทางปฏิบัติทั่วไปคือการดักจับข้อผิดพลาดด้านนโยบายที่ระบบสร้างขึ้นและดำเนินการต่อ เช่น สร้างการตอบกลับข้อผิดพลาดที่กำหนดเอง ตัวอย่างเช่น ด้วยเหตุผลด้านความปลอดภัย คุณอาจต้องการป้องกันไม่ให้ไคลเอ็นต์เห็นข้อผิดพลาดจริงและรหัสสถานะที่ Edge แสดง
ตัวแปร fault.name
เมื่อนโยบายทำให้เกิดข้อผิดพลาด ระบบจะตั้งค่าตัวแปรโฟลว์ fault.name
เป็นส่วน error_name
ของรหัสข้อผิดพลาด (ตามที่อธิบายไว้ในส่วนก่อนหน้า) การประเมินตัวแปรนี้เพื่อเรียกใช้กฎข้อบกพร่องแบบมีเงื่อนไขนั้นเป็นเรื่องปกติ
ต่อไปนี้คือตัวอย่างกฎข้อผิดพลาดที่ทดสอบค่าของ fault.name
<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition> </Step> </FaultRule>
สิ่งที่ควรทราบคือเมื่อนโยบายทริกเกอร์ข้อผิดพลาด ระบบจะตั้งค่าตัวแปร fault.name
เป็นชื่อข้อผิดพลาดเสมอ
ตัวแปร [prefix].[policy_name].failed
นอกเหนือจาก fault.name
ตัวแปรอื่นที่นักพัฒนาแอปมักจะตรวจสอบคือแฟล็ก [prefix].[policy_name].failed
ซึ่งตั้งค่าเป็น "จริง" หรือ "เท็จ" เมื่อบังคับใช้นโยบาย ในกฎความผิดพลาด คุณจะต้องตรวจสอบเพื่อดูว่าค่าเป็น true เมื่อใด กล่าวคือ
เพื่อตรวจสอบว่าเกิดข้อผิดพลาดขึ้นหรือไม่ วิธีสร้างเงื่อนไขที่ตรวจสอบ Flag [prefix].[policy_name].failed
มีดังนี้ หากต้องการตรวจสอบตัวแปรนี้อย่างถูกต้อง คุณจำเป็นต้องทราบ 2 สิ่งต่อไปนี้
- ชื่อของนโยบายที่คุณกำลังตรวจสอบ นี่คือค่าของแอตทริบิวต์ชื่อนโยบาย ไม่ใช่ชื่อที่แสดง แอตทริบิวต์นี้จะรวมอยู่ใน XML ของคำจำกัดความนโยบายเสมอ
- คำนำหน้าที่เจาะจงสำหรับประเภทนโยบายที่คุณตรวจสอบ (เราจะอธิบายวิธีค้นหาคำนำหน้าด้านล่าง)
ลองดูตัวอย่างกฎข้อผิดพลาดอีกข้อเพื่อแสดงตัวอย่าง สังเกตว่าชื่อตัวแปร [prefix].[policy_name].failed
สร้างขึ้นอย่างไรในเงื่อนไขภายนอก ในกรณีนี้ คำนำหน้าคือ extractvariables
และชื่อนโยบายคือ ParseJsonResponse
ในกรณีนี้ กฎข้อผิดพลาดจะทำงานต่อเมื่อตัวแปรนี้เป็นจริงเท่านั้น และนี่คือเคล็ดลับ เนื่องจากกฎข้อผิดพลาดอาจมีหลายขั้นตอน รูปแบบนี้จึงเป็นวิธีที่ดีในการจัดระเบียบกฎข้อผิดพลาดออกเป็นบล็อกต่างๆ
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition> </FaultRule>
เกี่ยวกับตัวแปร error
และ message
ตัวแปร error
จะใช้ได้ในขั้นตอนการเกิดข้อผิดพลาดของพร็อกซีเท่านั้น คุณจะได้รับข้อมูลที่เป็นประโยชน์จากตัวแปรข้อผิดพลาด เช่น ข้อความแสดงข้อผิดพลาด รหัสสถานะ วลีเหตุผล และอื่นๆ รูปแบบการจัดรูปแบบของตัวแปรข้อผิดพลาดคือ
error.[error_component] = [value]
เช่น
error.message
= "request message is not available for ExtractVariable:
ParseJsonResponse
นิ้ว
and
error.status.code = "500"
ตัวแปร message
พร้อมใช้งานในโฟลว์ข้อผิดพลาดด้วย และใช้เพื่อวัตถุประสงค์ที่คล้ายกันกับตัวแปร error
ได้ ตัวแปรข้อความมีความพิเศษเนื่องจากจะอิงตามบริบท ในขั้นตอนการส่งคำขอ ตัวแปรนี้จะทํางานเหมือนตัวแปรคําขอ และในขั้นตอนการตอบกลับ ตัวแปรนี้จะใช้เพื่อรับ/ตั้งค่าค่าการตอบกลับได้ หากต้องการทราบข้อมูลเพิ่มเติม โปรดดูกรณีการใช้งานสำหรับตัวแปรข้อความ
ดูข้อมูลเกี่ยวกับตัวแปร Edge ทั้งหมด รวมถึง error
และ message
ได้ที่ข้อมูลอ้างอิงเกี่ยวกับตัวแปร