Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
NothingToExtract
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory. Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Ví dụ về thông báo lỗi
Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách trích xuất biến không có bất kỳ phần tử nào URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
hoặc JSONPayload
, thì việc triển khai Proxy API sẽ không thành công do không có gì để trích xuất.
Như đã nêu trong thông báo lỗi, chính sách về Biến trích xuất phải có ít nhất một trong các thành phần sau đây thuộc chính sách URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
hoặc JSONPayload
.
Chẩn đoán
Kiểm tra chính sách Trích xuất biến có tên trong thông báo lỗi. Nếu chính sách này không có cả một trong các phần tử sau: URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
hoặc JSONPayload
, thì đó là nguyên nhân gây ra lỗi. Ví dụ: chính sách Biến trích xuất sau đây không có thành phần nào nêu trên:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Properties/>
</ExtractVariables>
Vì không có phần tử bắt buộc nào trong chính sách Trích xuất biến, nên bạn không thể triển khai proxy API.
Độ phân giải
Đảm bảo rằng chính sách Biến trích xuất có ít nhất một trong các thành phần bắt buộc sau: URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
, JSONPayload
. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Properties/>
<Source>request</Source>
<XMLPayload>
<Namespaces/>
<Variable name="age" type="integer">
<XPath>/age</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
NONEmptyPrefixMappedToEmptyURI
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.
Ví dụ về thông báo lỗi
Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Ảnh chụp màn hình mẫu
Nguyên nhân
Lỗi này xảy ra nếu Chính sách trích xuất biến có một tiền tố được xác định trong phần tử <Namespace>
thuộc phần tử <XMLPayload>
, nhưng không có URI nào được xác định.
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 tiền tố. Bạn có thể tìm thấy cả hai mục này trong thông báo lỗi. Ví dụ: trong lỗi sau đây, tên chính sách là
EV-XML-Age
và tiền tố làapigee
:ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
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 tiền tố được đặt trong phần tử
<Namespace>
thuộc phần tử<XMLPayload>
khớp với tên tiền tố được xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: chính sách sau đây chỉ định một tiền tố có tênapigee
trong phần tử<Namespace>
, khớp với nội dung trong thông báo lỗi:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="apigee"></Namespace> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath> </Variable> </XMLPayload> </ExtractVariables>
Xác thực xem phần tử
<Namespace>
có tiền tố cụ thể được xác định ở bước 2 có URI hợp lệ hay không. Nếu thiếu URI, thì đó là nguyên nhân gây ra lỗi.Trong ví dụ về chính sách Biến Trích xuất trình bày ở trên, hãy lưu ý rằng không có URI nào tương ứng với phần tử
<Namespace>
có tiền tốapigee
; do đó, bạn sẽ gặp lỗi:ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
Độ phân giải
Đảm bảo rằng tất cả phần tử <Namespace>
được xác định bằng một tiền tố đều có URI tương ứng trong chính sách Biến trích xuất. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
</Variable>
</XMLPayload>
</ExtractVariables>
DuplicatePrefix
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: Duplicate prefix [prefix_name].
Ví dụ về thông báo lỗi
Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Ảnh chụp màn hình mẫu
Nguyên nhân
Lỗi này xảy ra nếu Chính sách trích xuất biến có cùng tiền tố được xác định nhiều lần trong phần tử <Namespace>
thuộc phần tử <XMLPayload>
.
Ví dụ: lỗi này xảy ra vì tiền tố apigee
được xác định hai lần như minh hoạ dưới đây:
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
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 tiền tố. Bạn có thể tìm thấy cả hai mục này trong thông báo lỗi. Ví dụ: trong lỗi sau đây, tên chính sách là
EV-XML-Age
và tiền tố làapigee
:ExtractVariables EV-XML-Age: Duplicate prefix apigee.
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 tiền tố được đặt trong phần tử
<Namespace>
thuộc phần tử<XMLPayload>
khớp với tên tiền tố được xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: chính sách sau đây chỉ định một tiền tố có tênapigee
trong phần tử<Namespace>
, khớp với nội dung trong thông báo lỗi:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="gmail">http://mail.google.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <Variable name="legName" type="string <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload> </ExtractVariables>
Xác định xem phần tử
<Namespace>
có tiền tố cụ thể (được xác định ở bước 2) đã được xác định nhiều lần hay chưa. Nếu lỗi được xác định nhiều lần, thì đó là nguyên nhân gây ra lỗi.Trong ví dụ về chính sách Trích xuất các biến nêu trên, hãy lưu ý rằng phần tử
<Namespace>
có tiền tốapigee
đã được xác định 2 lần; do đó, bạn sẽ gặp lỗi:ExtractVariables EV-XML-Age: Duplicate prefix apigee.
Độ phân giải
Đảm bảo rằng chỉ có một định nghĩa cho mỗi tiền tố trong các phần tử <Namespace>
trong chính sách Biến trích xuất. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
</Variable>
</XMLPayload>
</ExtractVariables>
NoXPathsToEvaluate
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no xpaths to evaluate in variable name.
Ví dụ về thông báo lỗi
Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách trích xuất biến không có phần tử <XPath>
trong phần tử <XMLPayload>
, thì việc triển khai proxy API sẽ không thành công kèm theo lỗi nêu trên.
Chẩn đoán
Xác định chính sách Trích xuất biến không thành công từ thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
Extract-Variables-1
:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
Trong tệp XML của chính sách Trích xuất các biến bị lỗi, hãy kiểm tra xem có phần tử
<XMLPayload>
nào không có phần tử con<XPath>
hay không. Nếu có thì đó là nguyên nhân gây ra lỗi.Ví dụ: sau đây là chính sách Trích xuất biến có phần tử
<XMLPayload>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="HostReachable" type="boolean"> </Variable> </XMLPayload> </ExtractVariables>
Do không có phần tử
<XPath>
, nên việc triển khai Proxy API sẽ không thành công.
Độ phân giải
Đảm bảo rằng chính sách Trích xuất biến có phần tử <XPath>
được xác định trong phần tử <XMLPayload>
. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="HostReachable" type="boolean">
<XPath>/isReachable</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
EmptyXPathExpression
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: XPath expression is empty in variable name.
Ví dụ về thông báo lỗi
Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách trích xuất biến có biểu thức <XPath>
trống trong phần tử <XMLPayload>
, thì việc triển khai proxy API sẽ không thành công.
Chẩn đoán
Xác định chính sách Trích xuất biến không thành công từ thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
Extract-Variables-1
:ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
Trong tệp XML của chính sách Trích xuất các biến bị lỗi, hãy xác định xem có phần tử
<XMLPayload>
nào chứa phần tử con<XPath>
trống hay không. Nếu có thì đó là nguyên nhân gây ra lỗi.Ví dụ: sau đây là chính sách Trích xuất biến có phần tử
<XMLPayload>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="address" type="string"> <XPath></XPath> </Variable> </XMLPayload> </ExtractVariables>
Do có phần tử
<XPath>
trống trong phần tử<XMLPayload>
nên việc triển khai Proxy API sẽ không thành công.
Độ phân giải
Đảm bảo rằng chính sách Extract Variables (Biến trích xuất) có phần tử <XPath>
không trống và hợp lệ được xác định trong phần tử <XMLPayload>
. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="address" type="string">
<XPath>/address</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
NoJSONPathsToEvaluate
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.
Ví dụ về thông báo lỗi
Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách trích xuất biến không có phần tử <JSONPath>
trong phần tử <JSONPayload>
, thì việc triển khai proxy API sẽ không thành công kèm theo lỗi nêu trên.
Chẩn đoán
Xác định chính sách Trích xuất biến không thành công từ thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
Extract-Variables-1
:ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
Trong tệp XML của chính sách Trích xuất các biến bị lỗi, hãy xác định xem có phần tử
<JSONPayload>
nào không có phần tử con<JSONPath>
bắt buộc hay không. Nếu có thì đó là nguyên nhân gây ra lỗi.Ví dụ: sau đây là chính sách Trích xuất biến có phần tử
<JSONPayload>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <JSONPayload> <Variable name="title"> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> </ExtractVariables>
Do không có phần tử con
<JSONPath>
nào được xác định trong phần tử<JSONPayload>
nên việc triển khai Proxy API sẽ không thành công.
Độ phân giải
Đảm bảo rằng chính sách Trích xuất biến có phần tử <JSONPath>
được xác định trong phần tử <JSONPayload>
. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<JSONPayload>
<Variable name="title">
<JSONPath>$.book.title</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>
EmptyJSONPathExpression
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] ExtractVariables [policy_name]: JSONPath expression is empty in variable name.
Ví dụ về thông báo lỗi
Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách trích xuất biến có biểu thức <JSONPath>
trống trong phần tử <JSONPayload>
, thì việc triển khai proxy API sẽ không thành công.
Chẩn đoán
Xác định chính sách Trích xuất biến không thành công từ thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
Extract-Variables-1
:ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
Trong tệp XML của chính sách Trích xuất các biến không thành công, hãy xác minh xem có phần tử
<JSONPayload>
nào chứa phần tử con<JSONPath>
trống hay không. Nếu có thì đó là nguyên nhân gây ra lỗi.Ví dụ: sau đây là chính sách Trích xuất biến có phần tử
<JSONPayload>
:<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <JSONPayload> <Variable name="account_number" type="integer"> <JSONPath></JSONPath> </Variable> </JSONPayload> <Source clearPayload="false">request</Source> <VariablePrefix>apigee</VariablePrefix> </ExtractVariables>
Do có phần tử
<JSONPath>
trống trong phần tử<JSONPayload>
nên việc triển khai Proxy API sẽ không thành công.
Độ phân giải
Đảm bảo rằng chính sách Extract Variables (Biến trích xuất) có phần tử <JSONPath>
không trống và hợp lệ được xác định trong phần tử <JSONPayload>
. Ví dụ:
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<JSONPayload>
<Variable name="account_number" type="integer">
<JSONPath>$.account.number</JSONPath>
</Variable>
</JSONPayload>
<Source clearPayload="false">request</Source>
<VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>
MissingName
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]
Ví dụ về thông báo lỗi
Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách biến trích xuất không có thuộc tính name
trong bất kỳ phần tử chính sách nào như QueryParam
, Header
, FormParam
hoặc Variable
(nếu cần), thì việc triển khai proxy API sẽ không thành công.
Ví dụ: lỗi này xảy ra nếu thiếu thuộc tính name
trong phần tử Variable
.
Chẩn đoán
Xác định tên của chính sách Biến trích xuất xuất hiện lỗi và phần tử thiếu thuộc tính
name
. Bạn có thể tìm thấy các mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách làExtract-Variables-1
và tên phần tử làVariable
:Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
Trong tệp XML của chính sách Trích xuất các biến bị lỗi, hãy kiểm tra để đảm bảo tất cả các phần tử có tên được xác định ở bước 1 ở trên đều có thuộc tính
name
. Nếu có bất kỳ phần tử nào bị thiếu thuộc tính tên, thì đó là nguyên nhân gây ra lỗi.Ví dụ: chính sách Biến trích xuất sau đây có phần tử
<Variable>
được xác định:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Variable type="boolean"> <Pattern>{isAccountActive}</Pattern> </Variable> </ExtractVariables>
Lưu ý rằng thuộc tính
name
đang bị thiếu trong phần tửVariable
, do đó, việc triển khai Proxy API không thành công.
Độ phân giải
Đảm bảo rằng Chính sách trích xuất biến chứa thuộc tính name
bắt buộc cho các phần tử QueryParam
, Header
, FormParam
hoặc Variable
. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Variable name="account_active" type="boolean">
<Pattern>{isAccountActive}</Pattern>
</Variable>
</ExtractVariables>
PatternWithoutVariable
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Saving Revision [revision_number] Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]
Ví dụ về thông báo lỗi
Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách trích xuất biến không chỉ định biến trong phần tử <Pattern>
, thì bạn sẽ không triển khai được proxy API. Phần tử <Pattern>
cần có tên của biến mà dữ liệu đã trích xuất sẽ được lưu trữ.
Chẩn đoán
Xác định tên của chính sách Trích xuất biến đã xảy ra lỗi và mẫu bị thiếu Biến. Bạn có thể tìm thấy các mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
Extract-Variables-1
và tên phần tử là/a/b
:Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
Trong tệp XML của chính sách Trích xuất các biến bị lỗi, hãy xác minh rằng tổ hợp mẫu trong phần tử
<Pattern>
khớp với mẫu được xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: chính sách sau đây chỉ định một mẫu/a/b
, khớp với nội dung trong thông báo lỗi:Ví dụ: dưới đây là chính sách Biến trích xuất có 3 phần tử
<Pattern>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractVariables-1"> <Source>request</Source> <URIPath> <Pattern ignoreCase="true">/a/{pathSeg}</Pattern> <Pattern ignoreCase="true">/a/b/</Pattern> <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern> </URIPath> <VariablePrefix>urirequest</VariablePrefix> </ExtractVariables>
Kiểm tra xem phần tử
<Pattern>
được xác định ở bước 2 có chứa biến hay không. Biến phải được đặt trong dấu ngoặc nhọn. Nếu mẫu không có biến, thì là nguyên nhân gây ra lỗi.Phần tử
<Pattern>
có mẫu /a/b không bao gồm biến; do đó, việc triển khai Proxy API không thành công<Pattern ignoreCase="true">/a/b/</Pattern>
Độ phân giải
Đảm bảo mọi phần tử <Pattern>
đều có một biến (tên được đặt trong dấu ngoặc nhọn
dấu ngoặc nhọn). Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-1">
<Source>request</Source>
<URIPath>
<Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
<Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
</URIPath>
<VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>
CannotBeConvertedToNodeset
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Deploying Revision [revision_number] ExtractVariables [policy_name]: Result of xpath [policy_name] cannot be converted to nodeset. Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Ví dụ về thông báo lỗi
Error Deploying Revision 4 to test
ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu Chính sách trích xuất biến có biểu thức <XPath>
, trong đó loại <Variable>
được xác định là nodeset, nhưng không thể chuyển đổi biểu thức đó thành tập hợp nút, thì việc triển khai proxy API sẽ không thành công.
Chẩn đoán
Xác định chính sách Trích xuất các biến nơi xảy ra lỗi và Tên không thể chuyển đổi thành tập hợp nút (nodeset). Bạn có thể tìm thấy cả hai mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
Extract-Variables-1
và Wi-Fi là123
.ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Trong tệp XML của chính sách Trích xuất các biến không thành công, hãy xác minh rằng diễn ra trong phần tử
<XPath>
khớp với vai trò được xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: chính sách sau đây chỉ địnhthành 123
, khớp với nội dung trong thông báo lỗi:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> <DisplayName>Extract Variables-1</DisplayName> <Properties/> <Source clearPayload="false">request</Source> <VariablePrefix>visitor</VariablePrefix> <XMLPayload stopPayloadProcessing="false"> <Namespaces/> <Variable name="age" type="nodeset"> <XPath>123</XPath> </Variable> </XMLPayload> </ExtractVariables>
Kiểm tra loại phần tử
<Variable>
tương ứng với<XPath>
đã xác định trong bước 2 ở trên. Nếu loại<Variable>
lànodeset
, thì đó là nguyên nhân gây ra lỗi.Lưu ý rằng biểu thức
<XPath>
là123
trong ví dụ về chính sách Trích xuất biến.<XPath>123</XPath>
Không thể chuyển đổi biểu thức
123
thành tập hợp nút. Do đó, việc triển khai Proxy API không thành công.
Độ phân giải
Đảm bảo rằng biểu thức <XPath>
dùng trong chính sách Trích xuất các biến có thể được chuyển đổi thành tập hợp nút nếu loại <Variable>
được xác định là tập hợp nút. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
<DisplayName>Extract Variables-1</DisplayName>
<Properties/>
<Source clearPayload="false">request</Source>
<VariablePrefix>visitor</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="age" type="nodeset">
<XPath>/visitor/age</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
InvalidPattern
Thông báo lỗi
Thông báo lỗi sau không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge:
Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]
Ví dụ về thông báo lỗi
Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu định nghĩa phần tử <Pattern>
không hợp lệ trong bất kỳ phần tử nào như URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
hoặc JSONPayload
trong Chính sách trích xuất biến, thì việc triển khai proxy API sẽ không thành công.
Chẩn đoán
Xác định chính sách Trích xuất biến không thành công từ thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
Extract-Variables-2
:Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
Trong tệp XML của chính sách Trích xuất các biến bị lỗi, hãy kiểm tra xem có phần tử nào trong số này không và thêm phần tử
<Pattern>
.:URIPath
,QueryParam
,Header
,FormParam
,XMLPayload
hoặcJSONPayload
.Ví dụ: dưới đây là ví dụ về chính sách Trích xuất biến có phần tử
<Pattern>
trong phần tử<QueryParam>
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractVariables-2"> <DisplayName>ExtractVariables-2</DisplayName> <Source>request</Source> <QueryParam name="code"> <Pattern ignoreCase="true">{*}</Pattern> </QueryParam> <VariablePrefix>queryinfo</VariablePrefix> </ExtractVariables>
Kiểm tra định nghĩa của từng phần tử
<Pattern>
. Nếu có phần tử<Pattern>
nào đó có định nghĩa không hợp lệ, 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 lưu ý rằng định nghĩa
<Pattern>
trong phần tử<QueryParam>
không hợp lệ; do đó, không triển khai Proxy API được. Xem thêm Giới thiệu về tính năng so khớp và tạo biến<Pattern ignoreCase="true">{*}</Pattern>
Độ phân giải
Hãy đảm bảo rằng định nghĩa phần tử <Pattern>
trong các phần tử URIPath
, QueryParam
, Header
, FormParam
, XMLPayload
hoặc JSONPayload
trong chính sách Trích xuất biến là hợp lệ. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractVariables-2">
<DisplayName>Extract a value from a query parameter</DisplayName>
<Source>request</Source>
<QueryParam name="code">
<Pattern ignoreCase="true">{code}</Pattern>
</QueryParam>
<VariablePrefix>queryinfo</VariablePrefix>
</ExtractVariables>
Xem thêm bài viết Giới thiệu về tính năng so khớp và tạo biến
XPathCompilationFailed
Thông báo lỗi
Không triển khai được proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge kèm theo thông báo lỗi sau:
Error Deploying Revision [revision_number] ExtractVariables [policy_name]: Failed to compile xpath [xpath] Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
Ví dụ về thông báo lỗi
Error Deploying Revision 1 to test
ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Ảnh chụp màn hình mẫu
Nguyên nhân
Nếu tiền tố hoặc giá trị dùng trong phần tử <XPath>
không thuộc bất kỳ không gian tên đã khai báo nào trong Chính sách Trích xuất biến, thì bạn sẽ không triển khai được proxy API.
Bạn có thể tìm thêm thông tin về không gian tên, Wi-Fi và tiền tố trong bài viết Không gian tên XML và cách chúng ảnh hưởng đến giám sát và chẩn đoán diễn ra chẩn đoán.
Chẩn đoán
Xác định chính sách Extract Variables (Biến trích xuất) nơi xảy ra lỗi và vai trò không thể biên dịch. Bạn có thể tìm thấy cả hai mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách là
EV-XML-Age
và xpath là/apigee:Directions/apigee:route/apigee:leg/apigee:name
.ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
Trong tệp XML của chính sách Trích xuất các biến không thành công, hãy xác minh rằng diễn ra trong phần tử
<XPath>
khớp với vai trò được xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: chính sách sau đây chỉ địnhthành /apigee:Directions/apigee:route/apigee:leg/apigee:name
, khớp với nội dung trong thông báo lỗi:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age"> <DisplayName>EV-XML-Age</DisplayName> <Source clearPayload="false">request</Source> <XMLPayload stopPayloadProcessing="false"> <Namespaces> <Namespace prefix="gmail">http://mail.google.com</Namespace> </Namespaces> <Variable name="legName" type="string"> <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath> </Variable> </XMLPayload> </ExtractVariables>
Kiểm tra các phần tử
<Namespaces>
và<XPath>
trong chính sách Trích xuất biến. Nếu<XPath>
cụ thể được biểu thị trong thông báo lỗi sử dụng một tiền tố hoặc giá trị không thuộc không gian tên được khai báo trong chính sách Trích xuất biến, thì đó là nguyên nhân gây ra lỗi.Xin lưu ý rằng
<XPath>
cụ thể sử dụng tiền tốapigee
trong ví dụ về chính sách Biến Trích xuất.<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
Tuy nhiên, tiền tố
apigee
không được xác định trong bất kỳ phần tử<Namespace>
nào; do đó, việc biên dịch<XPath>
không thành công dẫn đến lỗi triển khai.
Độ phân giải
Đảm bảo bạn khai báo tất cả các không gian tên đang dùng trong phần tử <XPath>
trong Chính sách về biến trích xuất. Ví dụ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
<DisplayName>EV-XML-Age</DisplayName>
<Source clearPayload="false">request</Source>
<XMLPayload stopPayloadProcessing="false">
<Namespaces>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="gmail">http://mail.google.com</Namespace>
</Namespaces>
<Variable name="legName" type="string">
<XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>