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

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

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

หัวข้อนี้ถือว่าคุณมีความเข้าใจทั่วไปเกี่ยวกับวิธีการทำงานของการจัดการข้อผิดพลาดใน 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 คือ ชื่อข้อผิดพลาด คำนำหน้าจะบอกคุณว่านโยบายประเภทใดที่สร้างข้อผิดพลาด ในตัวอย่างข้างต้น คุณจะเห็นว่านโยบาย Extract Variables สร้างข้อผิดพลาด และชื่อข้อผิดพลาดคือ SourceMessageNotAvailable

faultstring มีคำอธิบายข้อผิดพลาด โดยปกติแล้ว Fault String จะมีคำใบ้ที่จะช่วยคุณค้นหาปัญหาที่เฉพาะเจาะจงซึ่งทำให้เกิดข้อผิดพลาด เช่น ชื่อนโยบาย ชื่อตัวแปรที่ยังไม่ได้รับการแก้ไข หรือสิ่งอื่นๆ ที่ทำให้เกิดข้อผิดพลาด ตัวอย่างเช่น ในข้อความแสดงข้อผิดพลาดข้างต้น "foo" เป็นชื่อตัวแปรข้อความที่ยังไม่ได้รับการแก้ไขซึ่งมีการอ้างอิงในนโยบาย และ "ParseJsonResponse" เป็นชื่อนโยบายที่ทริกเกอร์ข้อผิดพลาด

ตัวแปรที่เฉพาะเจาะจงสำหรับข้อผิดพลาดของนโยบาย

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

ตัวแปร fault.name

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

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

โปรดดูข้อมูลอ้างอิงตัวแปร เพื่อดูข้อมูลเกี่ยวกับตัวแปรทั้งหมดของ Edge รวมถึง error และ message