Khắc phục sự cố lỗi triển khai chính sách Trích xuất biến

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

  1. 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.
    
  2. 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ên apigee 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>
    
  3. 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

  1. 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.
    
  2. 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ên apigee 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>
    
  3. 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

  1. 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.
    
  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ử <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

  1. 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.
    
  2. 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

  1. 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.
    
  2. 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

  1. 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.
    
  2. 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

  1. 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
    
  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 để đả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

  1. 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.
    
  2. 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>
    
  3. 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

  1. 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.
    
  2. 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ỉ định thà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>
    
  3. 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>nodeset, thì đó là nguyên nhân gây ra lỗi.

    Lưu ý rằng biểu thức <XPath>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

  1. 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.
    
  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ặc JSONPayload.

    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>
    
  3. 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

  1. 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.
    
  2. 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ỉ định thà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>
    
  3. Kiểm tra các phần tử <Namespaces><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>