Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu 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 message được chỉ định trong phần tử <Source> của chính sách Trích xuất biến là một trong hai trường hợp sau:
- nằm ngoài phạm vi (không có trong quy trình cụ thể mà chính sách đang được thực thi) hoặc
- không thể phân giải (chưa được 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 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 nơi 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ử
faultstringcủa phản hồi lỗi. Ví dụ: trong faultstring sau, tên chính sách làExtractVariables-1và biến làresponse:"faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"Trong XML chính sách Extract Variables (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ử khớp với tên biến được xác định trong chuỗi lỗi (bước 1 ở trên). Ví dụ: chính sách Trích xuất biến sau đây chỉ định một biến có tên là
responsetrong phần tử, khớp với nội dung 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 được dùng trong phần tử
<Source>có được xác định và có sẵn trong luồng mà chính sách Trích xuất biến đang được thực thi hay không.Nếu biến là một trong hai trường hợp sau:
- nằm ngoài phạm vi (không có trong quy trình cụ thể mà chính sách đang được thực thi) hoặc
- không thể phân giải (chưa được xác định)
thì đó 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 minh hoạ ở trên thực thi trong luồng request. 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ếnresponsechỉ có trong luồng phản hồi.Vì biến
responsekhô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 rằng 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 xác định và tồn tại trong luồng mà chính sách thực thi.
Để sửa chính sách Extract Variables (Trích xuất biến) trong ví dụ nêu trên, bạn có thể sửa đổi phần tử <Source> để sử dụng biến request như trong luồng 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ị cho một biến. Điều này thường 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 một 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. Nếu sau đó bạn cố gắng gán một giá trị cho biến var.color.next khác, thì thao tá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ổ một biến khác cho biến này.
Chẩn đoán
Xác định chính sách Trích xuất biến nơi xảy ra lỗi và tên của biến mà giá trị không thể đặt. Bạn có thể tìm thấy cả hai mục này trong phần tử
faultstringcủa phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách làExtractColorsvà biến làvar.color.next:"faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"Trong tệp XML chính sách Extract Variables (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 được xác định trong chuỗi lỗi (bước 1 ở trên). Ví dụ: chính sách sau đây cố gắng chỉ định một giá trị từ tham số truy vấn yêu cầu cho một biến có tên là
var.color.next(giá trị xuất hiện trong 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 được 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 một giá trị cho một biến khác có tên bắt đầu bằng tên giống như tên biến được xác định trong chuỗi lỗi (bước 1 ở trên), 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 lưu ý rằng:
- Giá trị của tham số truy vấn có tên
colortrước tiên được chỉ định cho một biếnvar.color(Lưu ý:varlà tiền tố cho tất cả các biến như được đặt trong phần tử<VariablePrefix>) - Trong câu lệnh gán tiếp theo, giá trị của tham số truy vấn
nextcolorsẽ được gán cho một biến khác làvar.color.next. - 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 nhận được mã lỗisteps.extractvariables.SetVariableFailed
- Giá trị của tham số truy vấn có tên
Độ 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 trong định dạng 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 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 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 nơi 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ử
faultstringcủa phản hồi lỗi. Ví dụ: trong chuỗi lỗi sau đây, tên chính sách làExtractJSONVariablesvà đường dẫn JSON không hợp lệ là$.Name:"faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."Trong tệp XML chính sách Extract Variables (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 được xác định trong chuỗi lỗi (bước 1 ở trên). Ví dụ: chính sách Trích xuất 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 cố gắng trích xuất biến từ Tải trọng JSON nào. Ví dụ: nếu phần tử<Source>được đặt 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 được đặt thànhresponse, thì đó sẽ là đối tượng phản hồi.Trong chính sách Trích xuất biến trong ví dụ nêu trên, phần tử
<Source>được đặt thànhresponse, vì vậy, các biến đ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 thích hợp (xác định từ 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ụ: giả sử 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:
{ "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 và bạn nhận được mã lỗi:steps.extractvariables.InvalidJSONPath.
Độ phân giải
Đảm bảo rằng bạn chỉ chỉ định những đối tượng thuộc Tải trọng JSON mà từ đó các biến đang được trích xuất trong phần tử
<JSONPath>của chính sách Trích xuất biến.Để sửa chính sách Extract Variables (Trích xuất biến) trong ví dụ nêu 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 tải trọng phản hồi JSON mẫu (ví dụ: các đối tượngfirstNamevàlastNamelà 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ể
Các nguyên nhân có thể gây ra lỗi này là:
| Nguyên nhân | Nội dung mô tả |
| Thiếu tải trọng đầu vào | Tải trọng đầu vào (JSON, XML) đang trống. |
| Đầu vào không hợp lệ hoặc không đúng định dạng | Đầu vào (JSON, XML, v.v.) được truyền đến chính sách là không hợp lệ hoặc sai đị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 dùng để 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 thành request hoặc response và chúng được cho là chứa tải trọng JSON hoặc XML, nhưng tải trọng đó 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 nơi 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ụ: trong faultstring 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 Extract Variables không thành công và xác định loại dữ liệu đầu vào mà các 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ànhresponsevà đ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 đầu vào mà chính sách Trích xuất biến đang phân tích cú pháp có trống hay không. Nế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 là trống.
Vì tải trọng phản hồi XML trống, nên bạn sẽ nhận được mã lỗi:
steps.extractvariables.ExecutionFailedLỗ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 Trích xuất biến chỉ thực hiện trích xuất XML khi tiêu đề
Content-Typecủa thông báo làapplication/xml,text/xmlhoặcapplication/*+xml. Bạn phải truyền tiêu đề Content-Type dưới dạngapplication/xml,text/xmlhoặcapplication/*+xmlnếu muốn chính sách Trích xuất biến phân tích cú pháp 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 truyề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 đề với chính sách Extract Variables (Trích xuất biến) trong ví dụ 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 là
city.xmlvớ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: Đầ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 đầ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 bạn cung cấp JSON không hợp lệ sau đây làm đầ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 nơi xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử
faultstringcủa phản hồi lỗi. Ví dụ: trongfaultstringsau đâ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 Extract Variables không thành công và xác định loại dữ liệu đầu vào mà các 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ànhrequestvà đ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 đầu vào mà chính sách Trích xuất biến đang phân tích cú pháp có hợp lệ hay không. Nếu dữ liệu đầu vào không hợp lệ hoặc sai định dạ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, JSON không hợp lệ sau đây đã được truyền đến chính sách Trích xuất biến
[ "args": ["name" : "amar" ] ]Sau đây là lệnh gọi API mẫu cho biết cách truyề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.ExecutionFailedLỗi này cũng có thể xảy ra nếu phần tử
<Source>được đặt thànhresponsenhư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 truyền đến chính sách Trích xuất biến là hợp lệ và không bị sai định dạng.
Để khắc phục vấn đề với chính sách Extract Variables (Trích xuất biến) mẫu đã thảo luận ở trên, hãy truyền một 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 sang một biến. Điều này thường xảy ra nếu bạn cố gắng đặt giá trị của một kiểu dữ liệu thành một biến của kiểu 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ừ một biến Chuỗi thành một biến Số nguyên, thì bạn sẽ thấy lỗi này.
Chẩn đoán
Xác định kiểu dữ liệu của biến mà chính sách Trích xuất biến đang cố gắng truyền nhưng không thành công. Bạn có thể tìm thấy thông tin này trong phần tử
faultstringcủa phản hồi lỗi. Ví dụ: trongfaultstringsau đây, kiểu đố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ị cho một biến thuộc loại được xác định ở bước 1.
Ví dụ: chính sách Trích xuất biến sau đây trích xuất giá trị từ một
$.latitudeJSONPath sang một biến thuộc loạiboolean, khớp với nội dung 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 kiểu 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 loại dữ liệu được xác định ở bước 3 và loại dữ liệu của biến mà dữ liệu được chỉ định (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 nêu 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à Số nguyên, được chỉ định cho một biến có loại dữ liệu boolean.Vì kiểu dữ liệu của giá trị được trích xuất và kiểu dữ liệu của biến mà giá trị được chỉ định không giống nhau, nên bạn 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 được chỉ định có cùng kiểu.
Để sửa chính sách Extract Variables (Trích xuất biến) trong ví dụ, bạn phải sửa đổi loại biến thành Integer (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>. Điều này thường 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 phân tích cú pháp một đường dẫn JSON, nhưng phần tử <Source> chỉ định biến luồng request.content 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 nơi xảy ra lỗi và tên của biến luồng mà dữ liệu không thể trích xuất. 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 faultstring sau, tên chính sách là
ExtractVariables-1và biến làrequest.content:"faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"Trong XML chính sách Extract Variables (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 được xác định trong chuỗi lỗi (bước 1 ở trên). Ví dụ: chính sách Trích xuất biến sau đây chỉ định một biến có tên làrequest.content, khớp với nội dung trong 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>Xác thực xem biến luồng được dùng trong phần tử
<Source>có được xác định và có sẵn trong luồng mà chính sách Trích xuất biến đang được thực thi hay không.Nếu biến là một trong hai trường hợp sau:
- nằm ngoài phạm vi (không có trong quy trình cụ thể mà chính sách đang được thực thi) hoặc
- không thể phân giải (chưa được xác định)
thì đó là nguyên nhân gây ra lỗi.
Ví dụ: giả sử chính sách ExtractVariables nêu trên sẽ đượ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.contentchỉ có trong luồng yêu cầu.Vì biến
responsekhô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 được dùng trong phần tử <Source> của chính sách Trích xuất biến có trong luồng mà chính sách Trích xuất biến thực thi.
Ví dụ: giả sử có một biến có tên là response.content trong luồng phản hồi và trên thực tế chứa JSON mà bạn muốn trích xuất. Để sửa chính sách Extract Variables (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>