คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
SourceMessageNotAvailable
รหัสข้อผิดพลาด
steps.extractvariables.SourceMessageNotAvailable
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SourceMessageNotAvailable" } } }
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปร message ที่ระบุในองค์ประกอบ <Source>
ของนโยบายตัวแปรการแตกข้อมูลเป็นอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
ตัวอย่างเช่น ข้อผิดพลาดนี้เกิดขึ้นหากนโยบายการดึงข้อมูลตัวแปรทำงานในไฟล์
ขั้นตอนการส่งคำขอ แต่องค์ประกอบ <Source>
มีการตั้งค่าเป็น response
หรือ error
ซึ่งไม่มีอยู่ในขั้นตอนคำขอ
การวินิจฉัย
ระบุนโยบายการดึงข้อมูลตัวแปรที่เกิดข้อผิดพลาดและชื่อของตัวแปรที่ใช้ไม่ได้ คุณดูรายการทั้ง 2 รายการนี้ได้ในองค์ประกอบ
faultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ใน Faultstring ต่อไปนี้ ชื่อนโยบายคือExtractVariables-1
และตัวแปรคือresponse
"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"
ยืนยันว่าชื่อของตัวแปรใน XML ของนโยบายการดึงข้อมูลตัวแปรที่ล้มเหลว ที่ตั้งค่าไว้ในองค์ประกอบตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ที่ด้านบน) เช่น นโยบายการดึงข้อมูลตัวแปรต่อไปนี้ระบุตัวแปร ชื่อ
response
ในองค์ประกอบ ซึ่งตรงกับสิ่งที่อยู่ในสตริงความผิดพลาด:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>
ตรวจสอบว่าตัวแปรที่ใช้ในองค์ประกอบ
<Source>
ได้รับการกำหนดและพร้อมใช้งานในขั้นตอนที่มีการดำเนินการนโยบายการดึงข้อมูลตัวแปรหรือไม่หากตัวแปรมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่านโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบนทํางานในขั้นตอนคําขอ โปรดทราบว่ามีการใช้ตัวแปร
response
ในองค์ประกอบ<Source>
ของนโยบายการดึงข้อมูลตัวแปร ตัวแปรresponse
จะใช้ได้ในขั้นตอนการตอบกลับเท่านั้นเนื่องจากไม่มีตัวแปร
response
อยู่ในขั้นตอนคำขอ คุณจึงได้รับรหัสข้อผิดพลาด:steps.extractvariables.SourceMessageNotAvailable
ความละเอียด
ตรวจสอบว่าได้กำหนดตัวแปรที่ตั้งค่าในองค์ประกอบ <Source>
ของนโยบายการดึงข้อมูลตัวแปรที่ล้มเหลวแล้ว และมีอยู่ในโฟลว์ที่นโยบายทำงาน
หากต้องการแก้ไขตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน ให้แก้ไของค์ประกอบ <Source>
ให้ใช้ตัวแปร request
ตามที่มีอยู่ในขั้นตอนคําขอ
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
รหัสข้อผิดพลาด
steps.extractvariables.SetVariableFailed
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SetVariableFailed" } } }
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากนโยบายการแยกตัวแปรไม่สามารถตั้งค่าให้กับตัวแปรได้ ซึ่งมักเกิดขึ้นหากคุณพยายามกำหนดค่าให้กับตัวแปรหลายรายการที่ชื่อเริ่มต้นด้วยคำเดียวกันในรูปแบบที่คั่นด้วยจุดที่ซ้อนกัน
เช่น สมมติว่าคุณสร้าง/กำหนดค่าให้กับตัวแปร var.color
ในกรณีนี้ ระบบจะจัดสรร color
เป็นโหนดออบเจ็กต์ หากพยายามกำหนดค่าให้กับตัวแปรอื่น var.color.next
ค่าดังกล่าวจะทำไม่สำเร็จเนื่องจากมีการจัดสรรตัวแปร color
แล้ว และไม่อนุญาตให้จัดสรรตัวแปรอื่นให้ตัวแปรอื่น
การวินิจฉัย
ระบุนโยบายการดึงข้อมูลตัวแปรที่เกิดข้อผิดพลาดและชื่อของตัวแปรที่ตั้งค่าไม่ได้ คุณดูรายการทั้ง 2 รายการนี้ได้ในองค์ประกอบ
faultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือExtractColors
และตัวแปรคือvar.color.next
"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"
ใน XML นโยบายการดึงข้อมูลตัวแปรที่ไม่สําเร็จ ให้ยืนยันว่าชื่อตัวแปรตรงกับชื่อตัวแปรที่ระบุไว้ในสตริงข้อบกพร่อง (ขั้นตอนที่ 1 ด้านบน) สำหรับ ตัวอย่างเช่น นโยบายต่อไปนี้พยายามกำหนดค่าจากคำค้นหาคำขอ ไปยังตัวแปรชื่อ
var.color.next
(ค่าที่ปรากฏสตริงข้อผิดพลาด):<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{color.next}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>
ตรวจสอบชื่อตัวแปรทั้งหมดที่ใช้ในนโยบายการดึงข้อมูลตัวแปรที่ล้มเหลว หากคุณกําหนดค่าให้กับตัวแปรอื่นที่มีชื่อขึ้นต้นด้วยชื่อเดียวกับชื่อตัวแปรที่ระบุไว้ในสตริงข้อบกพร่อง (ขั้นตอนที่ 1 ด้านบน) แสดงว่านี่อาจเป็นสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน ให้สังเกตว่า
- ระบบจะกำหนดค่าพารามิเตอร์การค้นหาชื่อ
color
ให้กับตัวแปรvar.color
ก่อน(หมายเหตุ:var
เป็นคำนำหน้าสำหรับตัวแปรทั้งหมดตามที่ตั้งค่าไว้ในองค์ประกอบ<VariablePrefix>
) - ในการกําหนดค่าถัดไป ระบบจะกําหนดค่าพารามิเตอร์การค้นหา
nextcolor
ให้กับตัวแปรอื่นvar.color.next
- เนื่องจากมีการจัดสรร
var.color
อยู่แล้ว นโยบายการดึงข้อมูลตัวแปรจึงไม่สามารถจัดสรรตัวแปรที่ซ้อนกันอีกvar.color.next
ได้ ดังนั้นคุณจึงได้รับรหัสข้อผิดพลาด:steps.extractvariables.SetVariableFailed
- ระบบจะกำหนดค่าพารามิเตอร์การค้นหาชื่อ
ความละเอียด
ตรวจสอบว่าไม่มีชื่อตัวแปรหลายชื่อขึ้นต้นด้วย คำเดียวกันที่ซ้อนในรูปแบบที่คั่นด้วยจุด
หากต้องการแก้ไขนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน คุณสามารถแก้ไข ชื่อตัวแปร
var.color.next
เพื่อใช้ชื่อตัวแปรvar.nextcolor.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractColors"> <DisplayName>ExtractColors</DisplayName> <Source>request</Source> <QueryParam name="color"> <Pattern ignoreCase="true">{color}</Pattern> </QueryParam> <QueryParam name="nextcolor"> <Pattern ignoreCase="true">{nextcolor}</Pattern> </QueryParam> <VariablePrefix>var</VariablePrefix> </ExtractVariables>
ข้อมูลเพิ่มเติม
ดูรายละเอียดเพิ่มเติมได้ที่โพสต์ชุมชนนี้
InvalidJSONPath
รหัสข้อผิดพลาด
steps.extractvariables.InvalidJSONPath
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Invalid JSON path [path_name] in policy [policy_name].", "detail": { "errorcode": "steps.extractvariables.InvalidJSONPath" } } }
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากใช้เส้นทาง JSON ที่ไม่ถูกต้องในองค์ประกอบ <JSONPath>
ของนโยบายการดึงข้อมูลตัวแปร เช่น หากเพย์โหลด JSON ไม่มี
ออบเจ็กต์ Name
แต่คุณระบุ Name
เป็นเส้นทางในตัวแปรการดึงข้อมูล
แล้ว ข้อผิดพลาดนี้จะเกิดขึ้น
การวินิจฉัย
ระบุนโยบายการดึงข้อมูลตัวแปรที่เกิดข้อผิดพลาดและตัวแปรที่ไม่ถูกต้อง เส้นทาง JSON ทั้ง 2 รายการนี้อยู่ในองค์ประกอบ
faultstring
ของ การตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือExtractJSONVariables
และเส้นทาง JSON ที่ไม่ถูกต้องคือ$.Name
:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."
ใน XML ของนโยบายการดึงข้อมูลตัวแปรที่ล้มเหลว ให้ยืนยันว่าเส้นทาง JSON ที่ตั้งค่าไว้ใน องค์ประกอบ
<JSONPath>
ตรงกับเส้นทางที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) ตัวอย่างเช่น นโยบายการดึงข้อมูลตัวแปรต่อไปนี้ระบุเส้นทาง JSON$.Name
ที่ตรงกับสิ่งที่อยู่ใน fault string ได้แก่<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.Name</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>
ตรวจสอบเอลิเมนต์
<Source>
และพิจารณาว่าเพย์โหลด JSON ใดที่คุณพยายามแยกตัวแปร เช่น หากตั้งค่าองค์ประกอบ<Source>
เป็นrequest
นโยบายจะดึงเพย์โหลด JSON จากออบเจ็กต์คำขอ หากตั้งค่าเป็นresponse
รายการดังกล่าวจะเป็นออบเจ็กต์การตอบกลับในตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน องค์ประกอบ
<Source>
ตั้งค่าเป็นresponse
ระบบจึงดึงข้อมูลตัวแปรจากเพย์โหลด JSON ของคำตอบ<Source>response</Source>
ตรวจสอบเพย์โหลด JSON ที่เหมาะสม (กำหนดจากขั้นตอนที่ 3) และตรวจสอบ หากมีออบเจ็กต์ที่ระบุในองค์ประกอบ
<JSONPath>
หากเพย์โหลด JSON ไม่มีออบเจ็กต์ดังกล่าว นั่นจึงเป็นสาเหตุของข้อผิดพลาดตัวอย่างเช่น คุณกำลังพยายามดึงตัวแปรจากการติดตาม เพย์โหลดการตอบสนอง JSON:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }
เนื่องจากเพย์โหลดการตอบกลับ JSON ไม่มีออบเจ็กต์
Name
นโยบายการดึงข้อมูลตัวแปรจึงล้มเหลวโดยมีข้อผิดพลาดที่คุณได้รับรหัสข้อผิดพลาด:steps.extractvariables.InvalidJSONPath
ความละเอียด
ตรวจสอบว่าได้ระบุเฉพาะออบเจ็กต์ที่เป็นส่วนหนึ่งของเพย์โหลด JSON ซึ่งมีการดึงข้อมูลตัวแปรในองค์ประกอบ
<JSONPath>
ของนโยบายตัวแปรการดึงข้อมูลหากต้องการแก้ไขตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ
<JSONPath>
เพื่อระบุออบเจ็กต์ใดออบเจ็กต์หนึ่งที่มีอยู่ในเพย์โหลดการตอบกลับ JSON ตัวอย่าง (เช่น ออบเจ็กต์firstName
และlastName
ใช้งานได้)<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>response</Source> <JSONPayload> <Variable name="name" type="string"> <JSONPath>$.firstName</JSONPath> </Variable> </JSONPayload> <VariablePrefix>employee</VariablePrefix> </ExtractVariables>
ExecutionFailed
รหัสข้อผิดพลาด
steps.extractvariables.ExecutionFailed
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Failed to execute the ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.ExecutionFailed" } } }
สาเหตุที่เป็นไปได้
สาเหตุที่เป็นไปได้สำหรับข้อผิดพลาดนี้คือ
สาเหตุ | คำอธิบาย |
ไม่มีเพย์โหลดอินพุต | เพย์โหลดอินพุต (JSON, XML) ว่างเปล่า |
อินพุตไม่ถูกต้องหรือมีรูปแบบไม่ถูกต้อง | อินพุต (JSON, XML ฯลฯ) ที่ส่งไปยังนโยบายไม่ถูกต้องหรือผิดรูปแบบ |
สาเหตุ: ไม่มีเพย์โหลดอินพุต
หากนโยบายการดึงข้อมูลตัวแปรควรดึงข้อมูลตัวแปรจากเพย์โหลด JSON หรือ XML แต่เนื้อหา (เพย์โหลด) ของตัวแปรที่ระบุไว้ในองค์ประกอบ <Source>
ว่างเปล่า ระบบจะแสดงข้อผิดพลาดนี้
เช่น หากองค์ประกอบ <Source>
ในนโยบายการดึงข้อมูลตัวแปรเป็น request
หรือ response
องค์ประกอบเหล่านี้ควรมีหรือเพย์โหลด JSON หรือ XML แต่เพย์โหลดว่างเปล่า ระบบจะเกิดข้อผิดพลาดขึ้น
การวินิจฉัย
ระบุนโยบายการดึงข้อมูลตัวแปรที่เกิดข้อผิดพลาด คุณดู ข้อมูลนี้ในองค์ประกอบ faultstring ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
ExtractJSONVariables
"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"
ตรวจสอบองค์ประกอบ
<Source>
ใน XML ตัวแปรการแตกข้อมูลล้มเหลว และระบุประเภทอินพุตที่เป็นแหล่งที่มาของตัวแปร ตัวอย่างเช่น นโยบายการดึงข้อมูลตัวแปรต่อไปนี้มีองค์ประกอบ<Source>
ที่ตั้งค่าไว้เป็นresponse
และกำลังดึงข้อมูลตัวแปรจากเพย์โหลด XML<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true"> <XMLPayload> <Namespaces/> <Variable name="City" type="string"> <XPath>/city</XPath> </Variable> </XMLPayload> <Source clearPayload="false">response</Source> </ExtractVariables>
ตรวจสอบว่าอินพุตที่แยกวิเคราะห์โดยนโยบายการแยกตัวแปรว่างเปล่าหรือไม่ หากข้อมูลที่ป้อนว่างเปล่า นั่นเป็นสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน เพย์โหลดการตอบกลับ (เนื้อหาการตอบกลับ) ที่ส่งโดยเซิร์ฟเวอร์แบ็กเอนด์ว่างเปล่า
เนื่องจากเพย์โหลดการตอบกลับ XML ว่างเปล่า คุณได้รับรหัสข้อผิดพลาด:
steps.extractvariables.ExecutionFailed
ข้อผิดพลาดนี้อาจเกิดขึ้นได้เช่นกันหากตั้งค่าองค์ประกอบ
<Source>
เป็นrequest
แต่ ไม่มีการส่งผ่านเพย์โหลดในคำขอพร็อกซี API เช่นcurl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
นโยบายการดึงข้อมูลตัวแปรจะทำการดึงข้อมูล XML เมื่อไฟล์ ส่วนหัว
Content-Type
คือapplication/xml
,text/xml
หรือapplication/*+xml
คุณต้องส่งส่วนหัว Content-Type เป็นapplication/xml
,text/xml
หรือapplication/*+xml
หากคุณต้องการให้นโยบายการแยกตัวแปรการแยกวิเคราะห์ XML เพย์โหลดคำขอ
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบายการดึงข้อมูลตัวแปรถูกต้องและไม่ว่างเปล่า
ในการแก้ไขปัญหาเกี่ยวกับตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน ให้ส่ง เพย์โหลด XML ที่ถูกต้อง เช่น
สร้างไฟล์ชื่อ
city.xml
ด้วยเนื้อหาต่อไปนี้<city>Bengaluru</city> <area>Sanjaynagar</area>
เรียกใช้ API โดยใช้คำสั่ง cURL ดังนี้
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
สาเหตุ: อินพุตไม่ถูกต้องหรือมีรูปแบบไม่ถูกต้อง
หากนโยบายการแยกตัวแปรแยกวิเคราะห์อินพุตที่ไม่ถูกต้องหรือผิดรูปแบบ คุณจะได้รับข้อผิดพลาดนี้
เช่น หากมีการระบุ JSON ที่ไม่ถูกต้องต่อไปนี้เป็นอินพุตของนโยบายการดึงข้อมูลตัวแปร คุณจะได้รับข้อผิดพลาดนี้
[
"args": ["name" : "amar" ]
]
การวินิจฉัย
ระบุนโยบายการดึงข้อมูลตัวแปรที่เกิดข้อผิดพลาด คุณดู ข้อมูลนี้ในองค์ประกอบ
faultstring
ของการตอบสนองข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ ชื่อนโยบายคือExtractJSONVariables
"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"
ตรวจสอบองค์ประกอบ
<Source>
ใน XML ตัวแปรการแตกข้อมูลล้มเหลว และระบุประเภทอินพุตที่เป็นแหล่งที่มาของตัวแปร ตัวอย่างเช่น นโยบายการดึงข้อมูลตัวแปรต่อไปนี้มีการตั้งค่าองค์ประกอบ<Source>
เป็นrequest
และกําลังดึงตัวแปรจากเพย์โหลด JSON<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> </ExtractVariables>
ตรวจสอบว่าอินพุตที่แยกวิเคราะห์โดยนโยบายการแยกตัวแปรถูกต้องหรือไม่ หากข้อมูลที่ป้อนไม่ถูกต้องหรือผิดรูปแบบ นั่นเป็นสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน มีการส่ง JSON ที่ไม่ถูกต้องต่อไปนี้ไปยังนโยบายการดึงข้อมูลตัวแปร
[ "args": ["name" : "amar" ] ]
ต่อไปนี้คือตัวอย่างการเรียก API ที่แสดงให้เห็นว่าคำขอส่งผ่านไปอย่างไร
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
เพย์โหลด JSON ที่ส่งไปยัง API ไม่ถูกต้องเนื่องจากมีอาร์เรย์ที่มีวงเล็บเหลี่ยม (
[ ]
) คุณจึงได้รับรหัสข้อผิดพลาดต่อไปนี้steps.extractvariables.ExecutionFailed
ข้อผิดพลาดนี้ยังอาจเกิดขึ้นได้หากตั้งค่าองค์ประกอบ
<Source>
เป็นresponse
แต่เพย์โหลดการตอบกลับ JSON ไม่ถูกต้องหรือผิดรูปแบบ
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบายการแยกตัวแปรถูกต้องและไม่ผิดรูปแบบ
หากต้องการแก้ปัญหาเกี่ยวกับตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่กล่าวถึงข้างต้น ให้ส่งคำขอเพย์โหลด JSON ที่ถูกต้องโดยทำดังนี้
{
"args":{
"name":"amar"
}
}
UnableToCast
รหัสข้อผิดพลาด
steps.extractvariables.UnableToCast
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Unable to cast value [value] as [type].", "detail": { "errorcode": "steps.extractvariables.UnableToCast" } } }
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากนโยบายการดึงข้อมูลตัวแปรไม่สามารถแคสต์ข้อมูลที่ดึงข้อมูล ให้กับตัวแปร โดยปกติ กรณีนี้จะเกิดขึ้นหากคุณพยายามตั้งค่า ข้อมูลประเภทหนึ่งกับตัวแปรของประเภทข้อมูลอื่น
เช่น หากนโยบายการดึงข้อมูลตัวแปรพยายามตั้งค่าที่ดึงมาจากตัวแปรสตริงเป็นตัวแปรจำนวนเต็ม คุณจะเห็นข้อผิดพลาดนี้
การวินิจฉัย
ระบุประเภทข้อมูลของตัวแปรที่นโยบายการดึงข้อมูลตัวแปร พยายามแคสต์แต่ล้มเหลว คุณดูข้อมูลนี้ได้ใน
faultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstring
ต่อไปนี้ พารามิเตอร์ ประเภทออบเจ็กต์คือBOOLEAN
"faultstring":"Unable to cast value 36.231 as BOOLEAN."
ระบุนโยบายการแยกตัวแปรที่คุณพยายามตั้งค่าให้กับตัวแปรประเภทที่ระบุไว้ในขั้นตอนที่ 1
ตัวอย่างเช่น นโยบายการดึงข้อมูลตัวแปรต่อไปนี้จะดึงค่าจาก JSONPath
$.latitude
ไปยังตัวแปรประเภทboolean
ซึ่งตรงกับ ในสตริงข้อผิดพลาด<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="latitude" type="boolean"> <JSONPath>$.latitude</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">response</Source> </ExtractVariables>
ตรวจสอบประเภทข้อมูลของค่าที่จะแตกข้อมูล ข้อมูลอาจอยู่ใน รูปแบบของส่วนหัว, เส้นทาง URI, เพย์โหลด JSON/XML, พารามิเตอร์ฟอร์ม และพารามิเตอร์การค้นหา
ตรวจสอบว่าประเภทข้อมูลที่ระบุไว้ในขั้นตอนที่ 3 และประเภทข้อมูลของตัวแปรที่จะกําหนดค่า (ระบุไว้ในขั้นตอนที่ 2) เหมือนกันหรือไม่
หากประเภทข้อมูลของตัวแปรต้นทางและปลายทางไม่เหมือนกัน เป็นสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน ให้พิจารณาคำขอ JSON เพย์โหลดมีดังนี้
{ "latitude":36.2312 }
ประเภทข้อมูลของค่าที่จะดึงมาจาก
<JSONPath>
,‘$.latitude’
เป็นจำนวนเต็ม ซึ่งกำหนดให้กับตัวแปรของประเภทข้อมูลบูลีนเนื่องจากประเภทข้อมูลของค่าที่ดึงมาและประเภทข้อมูลของตัวแปรไปยัง ซึ่งค่าที่ได้รับการกำหนดไม่ใช่ค่าเดียวกัน คุณจะได้รับรหัสข้อผิดพลาด
steps.extractvariables.UnableToCast
ความละเอียด
ตรวจสอบว่าประเภทข้อมูลของค่าที่ดึงมาและตัวแปรที่เกี่ยวข้องกับเนื้อหา ถูกกำหนดเป็นประเภทเดียวกัน
หากต้องการแก้ไขนโยบายการดึงข้อมูลตัวแปรตัวอย่าง คุณต้องแก้ไขประเภทตัวแปรเป็นจำนวนเต็ม
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="latitude" type="integer">
<JSONPath>$.latitude</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response</Source>
</ExtractVariables>
JsonPathParsingFailure
รหัสข้อผิดพลาด
steps.extractvariables.JsonPathParsingFailure
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]", "detail": { "errorcode": "steps.extractvariables.JsonPathParsingFailure" } } }
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นเมื่อตัวแปรดึงข้อมูล
นโยบายแยกวิเคราะห์เส้นทาง JSON และแยกข้อมูลจากตัวแปรโฟลว์ไม่ได้
ที่ระบุในองค์ประกอบ <Source>
โดยปกติแล้วจะเกิดขึ้นหากตัวแปรโฟลว์
ไม่มีที่ระบุในองค์ประกอบ <Source>
ในขั้นตอนปัจจุบัน
ตัวอย่างเช่น ข้อผิดพลาดนี้เกิดขึ้นหากนโยบายการดึงข้อมูลตัวแปรทำงานในไฟล์
โฟลว์การตอบกลับและคาดว่าจะแยกวิเคราะห์เส้นทาง JSON แต่องค์ประกอบ <Source>
ระบุตัวแปรโฟลว์ request.content
ซึ่งไม่มีอยู่ในขั้นตอนการตอบกลับ
การวินิจฉัย
ระบุนโยบายการแยกตัวแปรที่เกิดข้อผิดพลาดขึ้นและชื่อของตัวแปรโฟลว์ที่ดึงข้อมูลไม่ได้ คุณดูทั้ง 2 รายการนี้ได้ในองค์ประกอบ Faultstring ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
ExtractVariables-1
และตัวแปรคือrequest.content
"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"
ใน XML นโยบายการดึงข้อมูลตัวแปรที่ไม่สําเร็จ ให้ตรวจสอบว่าชื่อตัวแปรที่ตั้งไว้ในองค์ประกอบ
<Source>
ตรงกับชื่อตัวแปรที่ระบุไว้ในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) เช่น ตัวแปรการดึงข้อมูลต่อไปนี้ นโยบายระบุตัวแปรที่ชื่อrequest.content
ซึ่งตรงกับสิ่งที่อยู่ใน faultstring<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true"> <JSONPayload> <Variable name="Name" type="string"> <JSONPath>$.args.name</JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request.content</Source> </ExtractVariables>
ตรวจสอบว่ามีการกำหนดตัวแปรโฟลว์ที่ใช้ในองค์ประกอบ
<Source>
หรือไม่ และพร้อมใช้งานในโฟลว์ที่มีการบังคับใช้นโยบายการดึงข้อมูลตัวแปรหากตัวแปรมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่าระบบควรเรียกใช้นโยบาย ExtractVariable ที่แสดงด้านบนในขั้นตอนการตอบกลับ โปรดทราบว่าตัวแปรโฟลว์
request.content
นั้นใช้ในองค์ประกอบ<Source>
ของนโยบายการดึงข้อมูลตัวแปร ตัวแปรโฟลว์request.content
จะพร้อมใช้งานในขั้นตอนคําขอเท่านั้นเนื่องจากไม่มีตัวแปร
response
อยู่ในขั้นตอนคำขอ คุณจึงได้รับรหัสข้อผิดพลาด:steps.extractvariables.JsonPathParsingFailure
ความละเอียด
ตรวจสอบว่าตัวแปรโฟลว์ที่ใช้ในองค์ประกอบ <Source>
ของการแตกข้อมูล
นโยบายตัวแปรจะอยู่ในโฟลว์ที่มีนโยบายการดึงข้อมูลตัวแปร
ในการดำเนินการ
เช่น สมมติว่ามีตัวแปรชื่อ response.content
ในการตอบกลับ
และที่จริงแล้วมี JSON ที่คุณต้องการแยกออก หากต้องการแก้ไขนโยบายการดึงข้อมูลตัวแปรที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ <Source>
ดังนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
<JSONPayload>
<Variable name="Name" type="string">
<JSONPath>$.args.name</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">response.content</Source>
</ExtractVariables>