คุณกำลังดูเอกสารประกอบของ 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 (จริง) หรือไม่ ซึ่งหมายถึงว่าเกิดข้อผิดพลาดขึ้นหรือไม่ วิธีสร้างเงื่อนไขที่ตรวจสอบแฟล็ก [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
นิ้ว
และ
error.status.code = "500"
นอกจากนี้ ตัวแปร message
ยังพร้อมใช้งานในขั้นตอนข้อผิดพลาดและใช้เพื่อวัตถุประสงค์ที่คล้ายกันกับตัวแปร error
ได้ ตัวแปรของข้อความเป็นตัวแปรพิเศษเนื่องจากเป็นตัวแปรตามบริบท โดยในขั้นตอนคำขอ คำขอจะมีลักษณะการทำงานเหมือนตัวแปรคำขอ และจะใช้เพื่อรับ/ตั้งค่าการตอบกลับได้ในขั้นตอนการตอบสนอง หากต้องการทราบข้อมูลเพิ่มเติม โปรดดูกรณีการใช้งานสำหรับตัวแปรข้อความ
ดูข้อมูลเกี่ยวกับตัวแปร Edge ทั้งหมด รวมถึง error
และ message
ได้ที่การอ้างอิงตัวแปร