สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบาย

คุณกำลังดูเอกสารประกอบ 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 สิ่งต่อไปนี้

  • ชื่อของนโยบายที่คุณกำลังตรวจสอบ นี่คือค่าของนโยบาย name ไม่ใช่ชื่อที่แสดง แอตทริบิวต์นี้รวมอยู่ในนโยบายเสมอ 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