Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
SourceMessageNotAvailable
Mã lỗi
steps.extractvariables.SourceMessageNotAvailable
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SourceMessageNotAvailable" } } }
Nguyên nhân
Lỗi này xảy ra nếu biến thông báo được chỉ định trong phần tử <Source>
của chính sách Trích xuất biến:
- ngoài phạm vi (không có trong quy trình cụ thể đang thực thi chính sách) hoặc
- không thể phân giải (không xác định)
Ví dụ: lỗi này xảy ra nếu chính sách Trích xuất biến thực thi trong luồng yêu cầu, nhưng phần tử <Source>
được đặt thành biến response
hoặc error
, biến không tồn tại trong luồng yêu cầu.
Chẩn đoán
Xác định chính sách Trích xuất biến xảy ra lỗi và tên của biến không có sẵn. Bạn có thể tìm thấy cả hai mục này trong phần tử
faultstring
của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách làExtractVariables-1
và biến làresponse
:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"
Trong tệp XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng tên của tập hợp biến trong phần tử khớp với tên biến đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Trích xuất các biến sau đây chỉ định một biến có tên là
response
trong phần tử, khớp với tên trong chuỗi lỗi:<ExtractVariables name="ExtractVariables-1"> <Source>response</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>
Xác định xem biến dùng trong phần tử
<Source>
có được định nghĩa và sử dụng trong quy trình thực thi chính sách Trích xuất biến hay không.Nếu biến đó là:
- ngoài phạm vi (không có trong quy trình cụ thể đang thực thi chính sách) hoặc
- không thể phân giải (không xác định)
thì đó chính là nguyên nhân gây ra lỗi.
Ví dụ: giả sử chính sách Trích xuất biến được hiển thị ở trên thực thi trong quy trình yêu cầu. Hãy nhớ rằng biến
response
được dùng trong phần tử<Source>
của chính sách Trích xuất biến. Biếnresponse
chỉ có trong quy trình phản hồi.Vì biến
response
không tồn tại trong luồng yêu cầu, nên bạn sẽ nhận được mã lỗi:steps.extractvariables.SourceMessageNotAvailable
.
Độ phân giải
Đảm bảo biến được đặt trong phần tử <Source>
của chính sách Trích xuất biến không thành công đã được định nghĩa và tồn tại trong luồng thực thi chính sách.
Để sửa ví dụ về chính sách Trích xuất biến nêu trên, bạn có thể sửa đổi phần tử <Source>
để sử dụng biến request
vì biến này tồn tại trong quy trình yêu cầu:
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
SetVariableFailed
Mã lỗi
steps.extractvariables.SetVariableFailed
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.SetVariableFailed" } } }
Nguyên nhân
Lỗi này xảy ra nếu chính sách Trích xuất biến không thể đặt giá trị thành một biến. Thông thường, điều này xảy ra nếu bạn cố gắng chỉ định giá trị cho nhiều biến có tên bắt đầu bằng cùng các từ ở định dạng lồng nhau được phân tách bằng dấu chấm.
Ví dụ: giả sử bạn tạo/chỉ định một giá trị cho biến var.color
. Trong trường hợp này, color
được phân bổ dưới dạng một nút đối tượng. Sau đó, nếu bạn cố gắng chỉ định giá trị cho một biến var.color.next
khác, thì việc này sẽ không thành công vì color
đã được phân bổ và bạn không được phép phân bổ biến khác cho biến đó.
Chẩn đoán
Xác định chính sách Trích xuất biến xảy ra lỗi và tên của biến không thể đặt giá trị. Bạn có thể tìm thấy cả hai mục này trong phần tử
faultstring
của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách làExtractColors
và biến làvar.color.next
:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"
Trong XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng tên của biến khớp với tên biến đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách sau đây cố gắng gán một giá trị từ tham số truy vấn yêu cầu cho một biến có tên
var.color.next
(giá trị xuất hiện chuỗi lỗi):<?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>
Kiểm tra tất cả tên biến dùng trong chính sách Trích xuất biến không thành công. Nếu bạn đã chỉ định giá trị cho một biến khác có tên bắt đầu bằng tên biến được xác định trong chuỗi lỗi (bước #1 ở trên), thì đó chính là nguyên nhân gây ra lỗi.
Trong ví dụ về chính sách Trích xuất biến nêu trên, bạn có thể lưu ý rằng:
- Trước tiên, giá trị của tham số truy vấn có tên là
color
được gán cho một biếnvar.color
(Lưu ý:var
là tiền tố cho tất cả các biến được đặt trong phần tử<VariablePrefix>
) - Trong bài tập tiếp theo, giá trị của tham số truy vấn
nextcolor
được gán cho một biếnvar.color.next
khác. - Vì
var.color
đã được phân bổ, nên chính sách Trích xuất biến không thể phân bổ một biến lồng nhau khácvar.color.next
. Vì vậy, bạn sẽ nhận được mã lỗi:steps.extractvariables.SetVariableFailed
- Trước tiên, giá trị của tham số truy vấn có tên là
Độ phân giải
Đảm bảo rằng bạn không có nhiều tên biến có tên bắt đầu bằng cùng một từ được lồng ở định dạng được phân tách bằng dấu chấm.
Để sửa chính sách Trích xuất biến nêu trên, bạn có thể sửa đổi tên biến
var.color.next
để sử dụng tên biếnvar.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>
Thông tin khác
Để biết thêm thông tin, hãy tham khảo bài đăng này trên thẻ Cộng đồng.
InvalidJSONPath
Mã lỗi
steps.extractvariables.InvalidJSONPath
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "Invalid JSON path [path_name] in policy [policy_name].", "detail": { "errorcode": "steps.extractvariables.InvalidJSONPath" } } }
Nguyên nhân
Lỗi này xảy ra nếu bạn sử dụng một đường dẫn JSON không hợp lệ trong phần tử <JSONPath>
của chính sách Trích xuất biến. Ví dụ: nếu một tải trọng JSON không có đối tượng Name
, nhưng bạn chỉ định Name
làm đường dẫn trong chính sách Extract Variables (Trích xuất biến), thì lỗi này sẽ xảy ra.
Chẩn đoán
Xác định chính sách Trích xuất biến xảy ra lỗi và đường dẫn JSON không hợp lệ. Bạn có thể tìm thấy cả hai mục này trong phần tử
faultstring
của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách làExtractJSONVariables
và đường dẫn JSON không hợp lệ là$.Name
:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."
Trong XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng đường dẫn JSON được đặt trong phần tử
<JSONPath>
khớp với đường dẫn đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Trích xuất các biến sau đây chỉ định đường dẫn JSON$.Name
, khớp với nội dung trong chuỗi lỗi:<?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>
Kiểm tra phần tử
<Source>
và xác định xem bạn đang muốn trích xuất biến từ Tải trọng JSON nào. Ví dụ: nếu bạn đặt phần tử<Source>
thànhrequest
, thì chính sách sẽ trích xuất tải trọng JSON từ đối tượng yêu cầu. Nếu bạn đặt thuộc tính này thànhresponse
, thì đó sẽ là đối tượng phản hồi.Trong ví dụ về chính sách Trích xuất biến ở trên, phần tử
<Source>
được đặt thànhresponse
, vì vậy, các biến này đang được trích xuất từ tải trọng JSON của phản hồi.<Source>response</Source>
Kiểm tra tải trọng JSON phù hợp (xác định ở bước 3) và xác thực xem tải trọng đó có đối tượng được chỉ định trong phần tử
<JSONPath>
hay không. Nếu tải trọng JSON không có đối tượng đó, thì đó là nguyên nhân gây ra lỗi.Ví dụ: hãy xem xét việc bạn đang cố gắng trích xuất các biến từ tải trọng phản hồi JSON sau đây:
{ "firstName":"John", "lastName":"Doe", "city":"San Jose", "state":"CA" }
Vì tải trọng phản hồi JSON không có đối tượng
Name
, nên chính sách Trích xuất biến sẽ gặp lỗi mà bạn nhận được mã lỗi:steps.extractvariables.InvalidJSONPath
.
Độ phân giải
Đảm bảo rằng chỉ các đối tượng thuộc Tải trọng JSON chứa các biến đang được trích xuất mới được chỉ định trong phần tử
<JSONPath>
của chính sách Trích xuất biến.Để sửa ví dụ về chính sách Trích xuất biến ở trên, bạn có thể sửa đổi phần tử
<JSONPath>
để chỉ định một trong các đối tượng có trong phần tải dữ liệu phản hồi JSON mẫu (ví dụ: các đối tượngfirstName
vàlastName
là hợp lệ):<?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
Mã lỗi
steps.extractvariables.ExecutionFailed
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "Failed to execute the ExtractVariables: [policy_name]", "detail": { "errorcode": "steps.extractvariables.ExecutionFailed" } } }
Các nguyên nhân có thể
Nguyên nhân có thể dẫn đến lỗi này là:
Nguyên nhân | Mô tả |
Thiếu tải trọng đầu vào | Tải trọng đầu vào (JSON, XML) trống. |
Thông tin đầu vào không hợp lệ hoặc không đúng định dạng | Dữ liệu đầu vào (JSON, XML, v.v.) được chuyển đến chính sách không hợp lệ hoặc không đúng định dạng. |
Nguyên nhân: Thiếu tải trọng đầu vào
Nếu chính sách Trích xuất biến được định trích xuất các biến từ tải trọng JSON hoặc XML, nhưng nội dung (tải trọng) của biến được chỉ định trong phần tử <Source>
bị trống, thì lỗi này sẽ xảy ra.
Ví dụ: Nếu phần tử <Source>
trong chính sách Trích xuất biến được đặt là request
hoặc response
và những phần tử này phải chứa hoặc tải trọng JSON hoặc XML, nhưng tải trọng đang trống, thì lỗi sẽ xảy ra.
Chẩn đoán
Xác định chính sách Trích xuất biến xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử chuỗi lỗi của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là
ExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"
Kiểm tra phần tử
<Source>
trong XML Trích xuất biến không thành công và xác định loại dữ liệu đầu vào mà biến đang được trích xuất. Ví dụ: chính sách Trích xuất biến sau đây có phần tử<Source>
được đặt thànhresponse
và đang trích xuất các biến từ tải trọng 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>
Kiểm tra xem dữ liệu đầu vào được phân tích cú pháp bằng chính sách Trích xuất biến có trống hay không. Nếu dữ liệu đầu vào trống, thì đó là nguyên nhân gây ra lỗi.
Trong ví dụ về chính sách Trích xuất biến ở trên, tải trọng phản hồi (tức là nội dung phản hồi) do máy chủ phụ trợ gửi đang trống.
Vì tải trọng phản hồi XML đang trống, nên bạn sẽ nhận được mã lỗi:
steps.extractvariables.ExecutionFailed
Lỗi này cũng có thể xảy ra nếu phần tử
<Source>
được đặt thànhrequest
, nhưng không có tải trọng nào được truyền trong yêu cầu proxy API. Ví dụ:curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
Chính sách Extract Variables chỉ thực hiện việc trích xuất XML khi tiêu đề
Content-Type
của thông báo làapplication/xml
,text/xml
hoặcapplication/*+xml
. Bạn phải chuyển tiêu đề Loại-Nội dung dưới dạngapplication/xml
,text/xml
hoặcapplication/*+xml
nếu muốn chính sách Trích xuất biến phân tích cú pháp một tải trọng yêu cầu XML.
Độ phân giải
Đảm bảo rằng dữ liệu đầu vào được chuyển đến chính sách Trích xuất biến là hợp lệ và không trống.
Để khắc phục vấn đề trong ví dụ về chính sách Trích xuất biến nêu trên, hãy truyền một tải trọng XML hợp lệ. Ví dụ:
Tạo một tệp có tên
city.xml
với nội dung sau:<city>Bengaluru</city> <area>Sanjaynagar</area>
Thực hiện lệnh gọi API bằng lệnh cURL như sau:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
Nguyên nhân: Thông tin đầu vào không hợp lệ hoặc không đúng định dạng
Nếu chính sách Trích xuất biến phân tích cú pháp dữ liệu đầu vào không hợp lệ hoặc sai định dạng, thì bạn sẽ gặp lỗi này.
Ví dụ: nếu JSON không hợp lệ sau đây được cung cấp làm dữ liệu đầu vào cho chính sách Trích xuất biến, bạn sẽ gặp lỗi này.
[
"args": ["name" : "amar" ]
]
Chẩn đoán
Xác định chính sách Trích xuất biến xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử
faultstring
của phản hồi lỗi. Ví dụ: trongfaultstring
sau đây, tên chính sách làExtractJSONVariables
:"faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"
Kiểm tra phần tử
<Source>
trong XML Trích xuất biến không thành công và xác định loại dữ liệu đầu vào mà biến đang được trích xuất. Ví dụ: chính sách Trích xuất biến sau đây có phần tử<Source>
được đặt thànhrequest
và đang trích xuất các biến từ tải trọng 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>
Kiểm tra xem dữ liệu đầu vào được phân tích cú pháp bằng chính sách Trích xuất biến có hợp lệ hay không. Nếu dữ liệu nhập không hợp lệ hoặc sai định dạng thì đó chính là nguyên nhân gây ra lỗi.
Trong ví dụ về chính sách Trích xuất biến ở trên, tệp JSON không hợp lệ sau đây đã được chuyển đến chính sách Trích xuất biến
[ "args": ["name" : "amar" ] ]
Dưới đây là lệnh gọi API mẫu cho thấy cách chuyển yêu cầu:
curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
Tải trọng JSON được truyền đến API không hợp lệ vì chứa một mảng có dấu ngoặc vuông (
[ ]
) , nên bạn sẽ nhận được mã lỗi:steps.extractvariables.ExecutionFailed
Lỗi này cũng có thể xảy ra nếu phần tử
<Source>
được đặt thànhresponse
nhưng tải trọng phản hồi JSON không hợp lệ hoặc không đúng định dạng.
Độ phân giải
Đảm bảo rằng dữ liệu đầu vào được chuyển đến chính sách Trích xuất biến là hợp lệ và không sai định dạng.
Để khắc phục vấn đề về chính sách Trích xuất biến được thảo luận ở trên, hãy chuyển yêu cầu tải trọng JSON hợp lệ như sau:
{
"args":{
"name":"amar"
}
}
UnableToCast
Mã lỗi
steps.extractvariables.UnableToCast
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "Unable to cast value [value] as [type].", "detail": { "errorcode": "steps.extractvariables.UnableToCast" } } }
Nguyên nhân
Lỗi này xảy ra nếu chính sách Trích xuất biến không thể truyền giá trị đã trích xuất thành một biến. Thông thường, điều này xảy ra nếu bạn cố gắng đặt giá trị của một loại dữ liệu thành một biến của một loại dữ liệu khác.
Ví dụ: nếu chính sách Trích xuất biến cố gắng đặt một giá trị đã được trích xuất từ biến Chuỗi thành biến Số nguyên, thì bạn sẽ thấy lỗi này.
Chẩn đoán
Xác định loại dữ liệu của biến mà chính sách Trích xuất biến đang cố gắng truyền và không thành công. Bạn có thể tìm thấy thông tin này trong phần tử
faultstring
của phản hồi lỗi. Ví dụ: trongfaultstring
sau đây, loại đối tượng làBOOLEAN
:"faultstring":"Unable to cast value 36.231 as BOOLEAN."
Xác định chính sách Trích xuất biến mà bạn đang cố gắng đặt giá trị thành một biến thuộc loại đã xác định ở bước #1.
Ví dụ: chính sách Extract Variables sau đây sẽ trích xuất giá trị từ JSONPath
$.latitude
sang biến thuộc loạiboolean
, khớp với giá trị trong chuỗi lỗi:<?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>
Kiểm tra loại dữ liệu của giá trị đang được trích xuất. Dữ liệu có thể ở dạng tiêu đề, đường dẫn URI, tải trọng JSON/XML, tham số biểu mẫu và tham số truy vấn.
Xác minh xem kiểu dữ liệu được xác định ở bước 3 và kiểu dữ liệu của biến cho dữ liệu nào đang được chỉ định (được xác định ở bước 2) có giống nhau hay không.
Nếu loại dữ liệu của biến nguồn và biến đích không giống nhau, thì đó là nguyên nhân gây ra lỗi.
Trong ví dụ về chính sách Trích xuất biến ở trên, hãy xem xét tải trọng yêu cầu JSON như sau:
{ "latitude":36.2312 }
Loại dữ liệu của giá trị được trích xuất từ
<JSONPath>
,‘$.latitude’
, là một Số nguyên được gán cho một biến boolean của loại dữ liệu.Vì loại dữ liệu của giá trị được trích xuất và loại dữ liệu của biến mà giá trị đang được chỉ định không giống nhau, nên bạn sẽ nhận được mã lỗi:
steps.extractvariables.UnableToCast
.
Độ phân giải
Đảm bảo rằng kiểu dữ liệu của giá trị được trích xuất và biến mà nội dung đang được chỉ định có cùng kiểu.
Để sửa ví dụ về chính sách Trích xuất biến, bạn phải sửa đổi loại biến thành Số nguyên:
<?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
Mã lỗi
steps.extractvariables.JsonPathParsingFailure
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]", "detail": { "errorcode": "steps.extractvariables.JsonPathParsingFailure" } } }
Nguyên nhân
Lỗi này xảy ra khi chính sách Trích xuất biến không thể phân tích cú pháp đường dẫn JSON và trích xuất dữ liệu từ biến luồng được chỉ định trong phần tử <Source>
. Thông thường, điều này xảy ra nếu biến luồng được chỉ định trong phần tử <Source>
không tồn tại trong luồng hiện tại.
Ví dụ: lỗi này xảy ra nếu chính sách Trích xuất biến thực thi trong luồng phản hồi và dự kiến sẽ phân tích cú pháp đường dẫn JSON, nhưng phần tử <Source>
sẽ chỉ định biến luồng request.content
, biến này không tồn tại trong luồng phản hồi.
Chẩn đoán
Xác định chính sách Trích xuất biến xảy ra lỗi và tên của biến luồng không thể trích xuất dữ liệu. Bạn có thể tìm thấy cả hai mục này trong phần tử chuỗi lỗi của phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách là
ExtractVariables-1
và biến làrequest.content
:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"
Trong tệp XML của chính sách Trích xuất biến không thành công, hãy xác minh rằng tên của biến được đặt trong phần tử
<Source>
khớp với tên biến đã xác định trong chuỗi lỗi (bước #1 ở trên). Ví dụ: chính sách Trích xuất các biến sau đây chỉ định một biến có tên làrequest.content
, khớp với nội dung trong chuỗi lỗi:<?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>
Xác thực xem biến luồng dùng trong phần tử
<Source>
đã được xác định và có trong luồng mà chính sách Trích xuất biến đang thực thi hay chưa.Nếu biến đó là:
- ngoài phạm vi (không có trong quy trình cụ thể đang thực thi chính sách) hoặc
- không thể phân giải (không xác định)
thì đó chính là nguyên nhân gây ra lỗi.
Ví dụ: giả sử chính sách ExtractVariables trình bày ở trên được thực thi trong luồng phản hồi. Hãy nhớ rằng biến luồng
request.content
được dùng trong phần tử<Source>
của chính sách Trích xuất biến. Biến luồngrequest.content
chỉ có trong luồng yêu cầu.Vì biến
response
không tồn tại trong luồng yêu cầu, nên bạn sẽ nhận được mã lỗi:steps.extractvariables.JsonPathParsingFailure
.
Độ phân giải
Đảm bảo rằng biến luồng dùng trong phần tử <Source>
của chính sách Trích xuất biến có sẵn trong luồng mà chính sách Trích xuất biến thực thi.
Chẳng hạn, giả sử một biến có tên response.content
tồn tại trong luồng phản hồi và trên thực tế lại chứa JSON mà bạn muốn trích xuất. Để sửa chính sách Trích xuất biến nêu trên, bạn có thể sửa đổi phần tử <Source>
như sau:
<?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>