คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
SourceMessageNotAvailable
รหัสข้อผิดพลาด
steps.extractvariables.SourceMessageNotAvailable
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
"detail": {
"errorcode": "steps.extractvariables.SourceMessageNotAvailable"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปรข้อความที่ระบุในองค์ประกอบ <Source> ของนโยบาย Extract Variables เป็นอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจงซึ่งมีการบังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กำหนด)
ตัวอย่างเช่น ข้อผิดพลาดนี้จะเกิดขึ้นหากนโยบาย Extract Variables ทำงานใน
โฟลว์คำขอ แต่ตั้งค่าองค์ประกอบ <Source> เป็นตัวแปร response หรือ error
ซึ่งไม่มีอยู่ในโฟลว์คำขอ
การวินิจฉัย
ระบุนโยบาย Extract Variables ที่เกิดข้อผิดพลาดและชื่อของตัวแปรที่ใช้ไม่ได้ คุณดูรายการทั้ง 2 รายการนี้ได้ในองค์ประกอบ
faultstringของการตอบกลับข้อผิดพลาด เช่น ใน faultstring ต่อไปนี้ ชื่อนโยบายคือExtractVariables-1และตัวแปรคือresponse"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"ใน XML ของนโยบาย Extract Variables ที่ล้มเหลว ให้ตรวจสอบว่าชื่อของตัวแปร ที่ตั้งค่าไว้ในองค์ประกอบตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ #1 ด้านบน) ตัวอย่างเช่น นโยบาย Extract Variables ต่อไปนี้จะระบุตัวแปร ชื่อ
responseในองค์ประกอบ ซึ่งตรงกับสิ่งที่อยู่ในสตริงข้อผิดพลาด<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>พิจารณาว่าตัวแปรที่ใช้ใน
<Source>องค์ประกอบมีการกำหนดและพร้อมใช้งานในโฟลว์ที่กำลังดำเนินการนโยบาย Extract Variables หรือไม่หากตัวแปรเป็นอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจงซึ่งมีการบังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กำหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่านโยบายการแยกตัวแปรที่แสดงด้านบนทำงานในโฟลว์คำขอ โปรดจำไว้ว่าตัวแปร
responseใช้ในองค์ประกอบ<Source>ของนโยบายตัวแปรที่ดึงข้อมูล ตัวแปรresponseใช้ได้เฉพาะในโฟลว์การตอบกลับเนื่องจากตัวแปร
responseไม่มีอยู่ในขั้นตอนการส่งคำขอ คุณจึงได้รับรหัสข้อผิดพลาดsteps.extractvariables.SourceMessageNotAvailable
ความละเอียด
ตรวจสอบว่าตัวแปรที่ตั้งค่าไว้ในองค์ประกอบ <Source> ของนโยบาย "แยกตัวแปร" ที่ล้มเหลวได้รับการกำหนดและมีอยู่ในโฟลว์ที่นโยบายดำเนินการ
หากต้องการแก้ไขนโยบาย Extract Variables ตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ <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"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากนโยบาย Extract Variables ตั้งค่าให้กับตัวแปรไม่ได้ โดยทั่วไปจะเกิดขึ้นหากคุณพยายามกำหนดค่าให้กับตัวแปรหลายตัวที่มีชื่อขึ้นต้นด้วยคำเดียวกันในรูปแบบที่คั่นด้วยจุดแบบซ้อนกัน
เช่น สมมติว่าคุณสร้าง/กําหนดค่าให้กับตัวแปร var.color ในกรณีนี้ ระบบจะจัดสรร color เป็นโหนดออบเจ็กต์ หากคุณพยายามกำหนดค่าให้กับตัวแปรอื่น var.color.next ระบบจะดำเนินการไม่สำเร็จเนื่องจากได้จัดสรร color ไปแล้ว และไม่อนุญาตให้จัดสรรตัวแปรอื่นให้กับตัวแปรนี้
การวินิจฉัย
ระบุนโยบาย Extract Variables ที่เกิดข้อผิดพลาดและชื่อของตัวแปรที่ตั้งค่าไม่ได้ คุณดูรายการทั้ง 2 รายการนี้ได้ในองค์ประกอบ
faultstringของการตอบกลับข้อผิดพลาด เช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือExtractColorsและตัวแปรคือvar.color.next"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"ใน XML ของนโยบาย Extract Variables ที่ล้มเหลว ให้ตรวจสอบว่าชื่อของตัวแปร ตรงกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 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>ตรวจสอบชื่อตัวแปรทั้งหมดที่ใช้ในนโยบาย Extract Variables ที่ล้มเหลว หากคุณกําหนดค่าให้กับตัวแปรอื่นที่มีชื่อขึ้นต้นด้วยชื่อเดียวกับชื่อตัวแปรที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) นั่นคือสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบาย "แยกตัวแปร" ที่แสดงด้านบน โปรดสังเกตสิ่งต่อไปนี้
- ระบบจะกําหนดค่าของพารามิเตอร์การค้นหาที่ชื่อ
colorให้กับตัวแปรvar.colorก่อน(หมายเหตุ:varคือคํานําหน้าของตัวแปรทั้งหมดตามที่ตั้งค่าไว้ในองค์ประกอบ<VariablePrefix>) - ในการกําหนดค่าครั้งถัดไป ระบบจะกําหนดค่าของพารามิเตอร์การค้นหา
nextcolorให้กับตัวแปรอื่นvar.color.next - เนื่องจากมีการจัดสรร
var.colorแล้ว นโยบาย Extract Variables จึงไม่สามารถจัดสรรตัวแปรที่ซ้อนกันอีกตัวหนึ่งvar.color.nextได้ คุณจึงได้รับรหัสข้อผิดพลาดsteps.extractvariables.SetVariableFailed
- ระบบจะกําหนดค่าของพารามิเตอร์การค้นหาที่ชื่อ
ความละเอียด
ตรวจสอบว่าคุณไม่มีชื่อตัวแปรหลายชื่อที่ขึ้นต้นด้วยคำเดียวกันซึ่งซ้อนกันในรูปแบบที่คั่นด้วยจุด
หากต้องการแก้ไขนโยบาย Extract Variables ที่แสดงด้านบน คุณสามารถแก้ไข ชื่อตัวแปร
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>
ของนโยบาย Extract Variables เช่น หากเพย์โหลด JSON ไม่มีออบเจ็กต์ Name แต่คุณระบุ Name เป็นเส้นทางในนโยบาย Extract Variables ข้อผิดพลาดนี้จะเกิดขึ้น
การวินิจฉัย
ระบุนโยบาย Extract Variables ที่เกิดข้อผิดพลาดและเส้นทาง JSON ที่ไม่ถูกต้อง คุณดูรายการทั้ง 2 นี้ได้ในองค์ประกอบ
faultstringของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือExtractJSONVariablesและเส้นทาง JSON ที่ไม่ถูกต้องคือ$.Name"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."ใน XML ของนโยบาย Extract Variables ที่ล้มเหลว ให้ตรวจสอบว่าเส้นทาง JSON ที่ตั้งค่าไว้ในองค์ประกอบ
<JSONPath>ตรงกับเส้นทางที่ระบุในสตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) ตัวอย่างเช่น นโยบาย Extract Variables ต่อไปนี้จะระบุเส้นทาง JSON$.Name, ซึ่งตรงกับสิ่งที่อยู่ในสตริงข้อผิดพลาด<?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ก็จะเป็นออบเจ็กต์การตอบกลับในตัวอย่างนโยบาย Extract Variables ที่แสดงด้านบน องค์ประกอบ
<Source>จะตั้งค่าเป็นresponseดังนั้นระบบจึงดึงตัวแปรจากเพย์โหลด JSON ของการตอบกลับ<Source>response</Source>ตรวจสอบเพย์โหลด JSON ที่เหมาะสม (กำหนดจากขั้นตอนที่ 3) และตรวจสอบว่ามีออบเจ็กต์ที่ระบุในองค์ประกอบ
<JSONPath>หรือไม่ หากเพย์โหลด JSON ไม่มีออบเจ็กต์ดังกล่าว แสดงว่านั่นคือสาเหตุของข้อผิดพลาดตัวอย่างเช่น สมมติว่าคุณพยายามดึงตัวแปรจากเพย์โหลดการตอบกลับ JSON ต่อไปนี้
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }เนื่องจากเพย์โหลดการตอบกลับ JSON ไม่มีออบเจ็กต์
Nameนโยบาย Extract Variables จึงทำงานไม่สำเร็จโดยมีข้อผิดพลาดที่คุณได้รับรหัสข้อผิดพลาดsteps.extractvariables.InvalidJSONPath
ความละเอียด
ตรวจสอบว่าได้ระบุเฉพาะออบเจ็กต์ที่เป็นส่วนหนึ่งของเพย์โหลด JSON ซึ่งมีการดึงตัวแปรในองค์ประกอบ
<JSONPath>ของนโยบาย Extract Variablesหากต้องการแก้ไขนโยบายตัวอย่าง Extract Variables ที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ
<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 ฯลฯ) ที่ส่งไปยังนโยบายไม่ถูกต้องหรือผิดรูปแบบ |
สาเหตุ: ไม่มีเพย์โหลดอินพุต
หากนโยบาย Extract Variables ควรดึงตัวแปรจากเพย์โหลด JSON หรือ XML แต่เนื้อหา (เพย์โหลด) ของตัวแปรที่ระบุในองค์ประกอบ <Source> ว่างเปล่า ข้อผิดพลาดนี้จะเกิดขึ้น
ตัวอย่างเช่น หากตั้งค่าองค์ประกอบ <Source> ในนโยบาย Extract Variables เป็น request หรือ response และควรมีเพย์โหลด JSON หรือ XML แต่เพย์โหลดว่างเปล่า ก็จะเกิดข้อผิดพลาดขึ้น
การวินิจฉัย
ระบุนโยบาย Extract Variables ที่เกิดข้อผิดพลาด คุณดูข้อมูลนี้ได้ในองค์ประกอบ faultstring ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ใน faultstring ต่อไปนี้ ชื่อนโยบายคือ
ExtractJSONVariables"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"ตรวจสอบองค์ประกอบ
<Source>ใน XML ของการแยกตัวแปรที่ไม่สำเร็จ และพิจารณาประเภทอินพุตที่ใช้แยกตัวแปร ตัวอย่างเช่น นโยบาย Extract Variables ต่อไปนี้มีการตั้งค่าองค์ประกอบ<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>ตรวจสอบว่าอินพุตที่นโยบาย Extract Variables กำลังแยกวิเคราะห์นั้นว่างเปล่าหรือไม่ หากอินพุตว่างเปล่า นั่นคือสาเหตุของข้อผิดพลาด
ในตัวอย่างนโยบาย Extract Variables ที่แสดงด้านบน เพย์โหลดการตอบกลับ (เช่น เนื้อหาการตอบกลับ) ที่เซิร์ฟเวอร์แบ็กเอนด์ส่งมานั้นว่างเปล่า
เนื่องจากเพย์โหลดการตอบกลับ XML ว่างเปล่า คุณจึงได้รับรหัสข้อผิดพลาดต่อไปนี้
steps.extractvariables.ExecutionFailedข้อผิดพลาดนี้อาจเกิดขึ้นได้เช่นกันหากตั้งค่าองค์ประกอบ
<Source>เป็นrequestแต่ ไม่มีการส่งเพย์โหลดในคำขอพร็อกซี API เช่นcurl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"นโยบาย Extract Variables จะทำการแยก XML เมื่อส่วนหัว
Content-Typeของข้อความเป็นapplication/xml,text/xmlหรือapplication/*+xmlเท่านั้น คุณต้องส่งส่วนหัว Content-Type เป็นapplication/xml,text/xmlหรือapplication/*+xmlหากต้องการให้นโยบาย Extract Variables แยกวิเคราะห์เพย์โหลดคำขอ XML
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบาย Extract Variables นั้นถูกต้องและไม่ว่างเปล่า
หากต้องการแก้ไขปัญหาเกี่ยวกับนโยบาย Extract Variables ตัวอย่างที่แสดงด้านบน ให้ส่งเพย์โหลด 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
สาเหตุ: ป้อนข้อมูลไม่ถูกต้องหรือมีรูปแบบไม่ถูกต้อง
หากนโยบาย Extract Variables แยกวิเคราะห์อินพุตที่ไม่ถูกต้องหรือผิดรูปแบบ คุณจะได้รับข้อผิดพลาดนี้
เช่น หากระบุ JSON ที่ไม่ถูกต้องต่อไปนี้เป็นอินพุตของนโยบาย Extract Variables คุณจะได้รับข้อผิดพลาดนี้
[
"args": ["name" : "amar" ]
]
การวินิจฉัย
ระบุนโยบาย Extract Variables ที่เกิดข้อผิดพลาด คุณดูข้อมูลนี้ได้ในองค์ประกอบ
faultstringของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในfaultstringต่อไปนี้ ชื่อนโยบายคือExtractJSONVariables"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"ตรวจสอบองค์ประกอบ
<Source>ใน XML ของการแยกตัวแปรที่ไม่สำเร็จ และพิจารณาประเภทอินพุตที่ใช้แยกตัวแปร ตัวอย่างเช่น นโยบาย Extract Variables ต่อไปนี้มีการตั้งค่าองค์ประกอบ<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>ตรวจสอบว่าอินพุตที่นโยบาย Extract Variables แยกวิเคราะห์นั้นถูกต้องหรือไม่ หากอินพุตไม่ถูกต้องหรือผิดรูปแบบ นั่นคือสาเหตุของข้อผิดพลาด
ในนโยบาย Extract Variables ตัวอย่างที่แสดงด้านบน ระบบได้ส่ง JSON ที่ไม่ถูกต้องต่อไปนี้ไปยังนโยบาย Extract Variables
[ "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 ไม่ถูกต้องหรือมีรูปแบบไม่ถูกต้อง
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบาย Extract Variables นั้นถูกต้องและไม่ผิดรูปแบบ
หากต้องการแก้ไขปัญหาเกี่ยวกับนโยบาย Extract Variables ตัวอย่างที่กล่าวถึงข้างต้น ให้ส่งคำขอเพย์โหลด JSON ที่ถูกต้องดังนี้
{
"args":{
"name":"amar"
}
}
UnableToCast
รหัสข้อผิดพลาด
steps.extractvariables.UnableToCast
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Unable to cast value [value] as [type].",
"detail": {
"errorcode": "steps.extractvariables.UnableToCast"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้จะเกิดขึ้นหากนโยบาย Extract Variables ไม่สามารถส่งค่าที่แยกออกมา ไปยังตัวแปรได้ โดยปกติแล้วปัญหานี้จะเกิดขึ้นหากคุณพยายามตั้งค่าของ ประเภทข้อมูลหนึ่งให้กับตัวแปรของประเภทข้อมูลอื่น
ตัวอย่างเช่น หากนโยบาย Extract Variable พยายามตั้งค่าที่ดึงมาจากตัวแปร String เป็นตัวแปร Integer คุณจะเห็นข้อผิดพลาดนี้
การวินิจฉัย
ระบุประเภทข้อมูลของตัวแปรที่นโยบายตัวแปร Extract พยายามแคสต์และไม่สำเร็จ คุณดูข้อมูลนี้ได้ใน
faultstringของคำตอบข้อผิดพลาด ตัวอย่างเช่น ในfaultstringต่อไปนี้ ประเภทออบเจ็กต์คือBOOLEAN"faultstring":"Unable to cast value 36.231 as BOOLEAN."ระบุนโยบาย Extract Variables ที่คุณพยายามตั้งค่าให้กับตัวแปรประเภทที่กำหนดไว้ในขั้นตอนที่ #1
ตัวอย่างเช่น นโยบาย Extract Variables ต่อไปนี้จะดึงค่าจาก 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) เหมือนกันหรือไม่
หากประเภทข้อมูลของตัวแปรต้นทางและปลายทางไม่เหมือนกัน นั่นคือสาเหตุของข้อผิดพลาด
ในนโยบาย Extract Variables ตัวอย่างที่แสดงด้านบน ให้พิจารณาว่าเพย์โหลดคำขอ JSON มีลักษณะดังนี้
{ "latitude":36.2312 }ประเภทข้อมูลของค่าที่ดึงจาก
<JSONPath>,‘$.latitude’คือจำนวนเต็ม ซึ่งกำหนดให้กับตัวแปรประเภทข้อมูลบูลีนเนื่องจากประเภทข้อมูลของค่าที่ดึงออกมาและประเภทข้อมูลของตัวแปรที่กําลังกําหนดค่าให้ไม่เหมือนกัน คุณจึงได้รับรหัสข้อผิดพลาด
steps.extractvariables.UnableToCast
ความละเอียด
ตรวจสอบว่าประเภทข้อมูลของค่าที่แยกออกมาและตัวแปรที่จะกำหนดเนื้อหา เป็นประเภทเดียวกัน
หากต้องการแก้ไขนโยบายตัวอย่าง Extract Variables คุณต้องแก้ไขประเภทของ ตัวแปรเป็น Integer โดยทำดังนี้
<?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"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นเมื่อนโยบาย Extract Variables
แยกวิเคราะห์เส้นทาง JSON และดึงข้อมูลจากตัวแปรโฟลว์
ที่ระบุไว้ในองค์ประกอบ <Source> ไม่ได้ โดยปกติแล้ว กรณีนี้จะเกิดขึ้นหากตัวแปรโฟลว์ที่ระบุในองค์ประกอบ <Source> ไม่มีอยู่ในโฟลว์ปัจจุบัน
ตัวอย่างเช่น ข้อผิดพลาดนี้จะเกิดขึ้นหากนโยบาย Extract Variables ทำงานใน
โฟลว์การตอบกลับและคาดว่าจะแยกวิเคราะห์เส้นทาง JSON แต่องค์ประกอบ <Source>
ระบุตัวแปรโฟลว์ request.content ซึ่งไม่มีอยู่ในโฟลว์การตอบกลับ
การวินิจฉัย
ระบุนโยบายตัวแปร Extract ที่เกิดข้อผิดพลาดและชื่อของตัวแปรโฟลว์ที่ดึงข้อมูลไม่ได้ คุณจะดูทั้ง 2 รายการนี้ได้ในองค์ประกอบ faultstring ของการตอบกลับข้อผิดพลาด เช่น ใน faultstring ต่อไปนี้ ชื่อนโยบายคือ
ExtractVariables-1และตัวแปรคือrequest.content"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"ใน XML ของนโยบาย Extract Variables ที่ล้มเหลว ให้ตรวจสอบว่าชื่อของ ตัวแปรที่ตั้งค่าไว้ในองค์ประกอบ
<Source>ตรงกับชื่อตัวแปรที่ระบุใน สตริงข้อผิดพลาด (ขั้นตอนที่ 1 ด้านบน) ตัวอย่างเช่น นโยบาย Extract Variables ต่อไปนี้ระบุตัวแปรชื่อ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>องค์ประกอบได้รับการกำหนดและพร้อมใช้งานในโฟลว์ที่นโยบาย Extract Variables กำลังดำเนินการอยู่หากตัวแปรเป็นอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในโฟลว์ที่เฉพาะเจาะจงซึ่งมีการบังคับใช้นโยบาย) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กำหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่านโยบาย ExtractVariables ที่แสดงด้านบนควรดำเนินการในโฟลว์การตอบกลับ โปรดจำไว้ว่าตัวแปรโฟลว์
request.contentใช้ในองค์ประกอบ<Source>ของนโยบายตัวแปรที่ดึงข้อมูล ตัวแปรโฟลว์request.contentใช้ได้ในโฟลว์คำขอเท่านั้นเนื่องจากตัวแปร
responseไม่มีอยู่ในขั้นตอนการส่งคำขอ คุณจึงได้รับรหัสข้อผิดพลาดsteps.extractvariables.JsonPathParsingFailure
ความละเอียด
ตรวจสอบว่าตัวแปรโฟลว์ที่ใช้ในองค์ประกอบ <Source> ของนโยบาย Extract
Variables พร้อมใช้งานในโฟลว์ที่นโยบาย Extract Variables
ทํางาน
ตัวอย่างเช่น สมมติว่ามีตัวแปรชื่อ response.content อยู่ในการตอบกลับ
โฟลว์ และในความเป็นจริงมี JSON ที่คุณต้องการแยก หากต้องการแก้ไขนโยบาย Extract
Variables ที่แสดงด้านบน คุณสามารถแก้ไของค์ประกอบ <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>