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

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 với thông báo lỗi sau:

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ì quá trình triển khai Proxy API sẽ không thành công vì không có gì để trích xuất.

Như đã nêu trong thông báo lỗi, chính sách Trích xuất biến phải có ít nhất một trong các phần tử sau đây được đưa vào 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 các biến có tên trong thông báo lỗi. Nếu chính sách không có một trong các phần tử sau đây: URIPath, QueryParam, Header, FormParam, XMLPayload hoặc JSONPayload, thì đó chính là nguyên nhân gây ra lỗi. Ví dụ: chính sách Trích xuất biến không có bất kỳ yếu tố nào được đề cập ở 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 không triển khai được proxy API.

Độ phân giải

Đảm bảo rằng chính sách Trích xuất biến có ít nhất một trong các phần tử 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

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 với thông báo lỗi sau:

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> của 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 xảy ra lỗi và tên 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, 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 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ố đã đặt trong phần tử <Namespace> của 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 Extract Variables (Trích xuất biến) ở 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 Trích xuất biến. 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

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 với thông báo lỗi sau:

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 một tiền tố được xác định nhiều lần trong phần tử <Namespace> của 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ư 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 xảy ra lỗi và tên 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, 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 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ố đã đặt trong phần tử <Namespace> của 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ể (xác định ở bước 2) có được xác định nhiều lần hay không. Nếu thông số đượ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 biến ở trên, hãy lưu ý rằng phần tử <Namespace> có tiền tố apigee đã được xác định hai 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 Trích xuất biến. 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

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 với thông báo lỗi sau:

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ì nghĩa là không triển khai được proxy API với 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, chính sách có tên là Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. Trong XML của chính sách Trích xuất biến không thành công, 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ì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: sau đây là một 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>
    

    Vì không có phần tử <XPath> nên không thể triển khai Proxy API.

Độ 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

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 với thông báo lỗi sau:

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ó một biểu thức <XPath> trống trong phần tử <XMLPayload>, thì tức là không triển khai được proxy API.

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, chính sách có tên 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 biến không thành công, hãy xác định xem có phần tử <XMLPayload> nào có phần tử con <XPath> trống hay không. Nếu có thì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: sau đây là một 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ó một phần tử <XPath> trống trong phần tử <XMLPayload>, nên không thể triển khai Proxy API.

Độ phân giải

Đảm bảo rằng chính sách Trích xuất biến 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

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 với thông báo lỗi sau:

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ì nghĩa là không triển khai được proxy API với 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, chính sách có tên 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 biến, 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ì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: sau đây là một 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>
    

    Vì không có phần tử con <JSONPath> nào được xác định trong phần tử <JSONPayload> nên không triển khai được Proxy API.

Độ 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

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 với thông báo lỗi sau:

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ó một biểu thức <JSONPath> trống trong phần tử <JSONPayload>, thì tức là không triển khai được proxy API.

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, chính sách có tên là Extract-Variables-1:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. 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 xem có phần tử <JSONPayload> nào có phần tử con <JSONPath> trống hay không. Nếu có thì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: sau đây là một 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ó một phần tử <JSONPath> trống trong phần tử <JSONPayload>, nên không thể triển khai Proxy API.

Độ phân giải

Đảm bảo rằng chính sách Trích xuất biến 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

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 với thông báo lỗi sau:

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 trích xuất biến không có thuộc tính name trong bất kỳ phần tử nào của chính sách như QueryParam, Header, FormParam hoặc Variable (nếu bắt buộc), thì sẽ không triển khai được proxy API.

Ví dụ: lỗi này xảy ra nếu thuộc tính name bị thiếu trong phần tử Variable.

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à phần tử thiếu thuộc tính name. Bạn có thể thấy những 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 XML của chính sách Trích xuất biến không thành công, hãy kiểm tra để đảm bảo rằng 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ì đó chính là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách Trích xuất biến 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 bị thiếu trong phần tử Variable, vì vậy, không thể triển khai Proxy API.

Độ 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

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 với thông báo lỗi sau:

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 có biến được chỉ định trong phần tử <Pattern>, thì sẽ không triển khai được proxy API. Phần tử <Pattern> cần có tên của biến sẽ lưu trữ dữ liệu được trích xuất.

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 mà Biến bị thiếu. Bạn có thể tìm thấy những 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 XML của chính sách Trích xuất biến, hãy xác minh rằng mẫu được đặt 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ẫu /a/b khớp với nội dung trong thông báo lỗi:

    Ví dụ: dưới đây là một chính sách về Trích xuất biến có ba 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> đã xác định ở bước 2 có không có biến hay không. Các 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 đó, không thể triển khai Proxy API

    <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 nằm trong 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

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 với thông báo lỗi sau:

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ó một biểu thức <XPath>, trong đó loại <Variable> được định nghĩa là tập hợp nút, nhưng không thể chuyển đổi biểu thức này thành tập hợp nút, thì sẽ không triển khai được proxy API.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi và XPath không thể chuyển đổi thành nhóm 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, tên chính sách là Extract-Variables-1 và XPath 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 XML chính sách Trích xuất biến không thành công, hãy xác minh rằng XPath được đặt trong phần tử <XPath> khớp với XPath được xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: chính sách sau chỉ đị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ì đó chính là nguyên nhân gây ra lỗi.

    Xin lưu ý rằng biểu thức <XPath>123 trong chính sách Extract Variables của ví dụ.

    <XPath>123</XPath>
    

    Không thể chuyển đổi biểu thức 123 thành tập hợp nút. Do đó, không thể triển khai Proxy API.

Độ phân giải

Đảm bảo rằng bạn có thể chuyển đổi biểu thức <XPath> dùng trong chính sách Trích xuất biến 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

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 với thông báo lỗi sau:

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ì quá trình 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, chính sách có tên là Extract-Variables-2:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. Trong XML của chính sách Trích xuất biến không thành công, hãy kiểm tra xem có phần tử nào trong số này không và có chứa phần tử <Pattern> hay không.: URIPath, QueryParam, Header, FormParam, XMLPayload hoặc JSONPayload.

    Ví dụ: sau đây là một 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. Hãy kiểm tra định nghĩa của từng phần tử <Pattern>. Nếu có bất kỳ phần tử <Pattern> nào có định nghĩa không hợp lệ, thì đó chính là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách Extract Variables (Trích xuất biến) ở 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 thể triển khai Proxy API. Xem thêm bài viết Giới thiệu về cách so khớp và tạo biến

    <Pattern ignoreCase="true">{*}</Pattern>
    
    

Độ phân giải

Đả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ề cách 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 với 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 nào đã khai báo trong Chính sách trích xuất biến, thì quá trình triển khai proxy API sẽ không thành công.

Bạn có thể tìm thêm thông tin về không gian tên, XPath và tiền tố trong phần Không gian tên XML và Cách chúng ảnh hưởng đến XPath và GCC.

Chẩn đoán

  1. Xác định chính sách Trích xuất biến xảy ra lỗi và XPath không thể biên dịch được. 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à 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 XML chính sách Trích xuất biến không thành công, hãy xác minh rằng XPath được đặt trong phần tử <XPath> khớp với XPath được xác định trong thông báo lỗi (bước #1 ở trên). Ví dụ: chính sách sau chỉ đị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 nêu trong thông báo lỗi sử dụng một tiền tố hoặc giá trị không thuộc vùng chứa tên đã khai báo trong chính sách Trích xuất biến, thì đó chính là nguyên nhân gây ra lỗi.

    Hãy lưu ý rằng <XPath> cụ thể sử dụng tiền tố apigee trong ví dụ về chính sách Trích xuất biến.

    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
    

    Tuy nhiên, tiền tố apigee không được định nghĩa 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 tất cả không gian tên đang được sử dụng trong các phần tử <XPath> đều được khai báo 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>