Rozwiązywanie problemów z wdrażaniem zasad dotyczących wyodrębniania zmiennych

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

NothingToExtract

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

Error Saving Revision 2
ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych nie zawiera żadnych elementów URIPath, QueryParam, Header, FormParam, XMLPayload ani JSONPayload, wdrożenie serwera proxy interfejsu API nie powiedzie się, ponieważ nie ma niczego do wyodrębnienia.

Jak wskazujemy w komunikacie o błędzie, zasada Wyodrębnianie zmiennych musi zawierać co najmniej 1 z tych elementów: URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload.

Diagnostyka

Sprawdź zasadę Wyodrębniania zmiennych o nazwie podanej w komunikacie o błędzie. Jeśli zasada nie zawiera nawet jednego z tych elementów: URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload, jest to przyczyna błędu. Na przykład poniższe zasady „Wyodrębnianie zmiennych” nie zawierają żadnego z wymienionych powyżej elementów:

<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
    <DisplayName>EV-XML-Age</DisplayName>
    <Properties/>
</ExtractVariables>

Ponieważ zasada Wyodrębnianie zmiennych nie zawiera żadnego z wymaganych elementów, wdrożenie serwera proxy interfejsu API się nie uda.

Rozdzielczość

Upewnij się, że zasada Wyodrębnianie zmiennych zawiera co najmniej jeden z tych obowiązkowych elementów: URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload. Na przykład:

<?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>

NONPusty przedrostek mapowany do pustego identyfikatora URI

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.

Przykładowy komunikat o błędzie

Error Saving Revision 3
ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.

Przykładowy zrzut ekranu

Przyczyna

Ten błąd występuje, jeśli zasada „Wyodrębnianie zmiennych” ma prefiks zdefiniowany w elemencie <Namespace> w elemencie <XMLPayload>, ale nie zdefiniowano identyfikatora URI.

Diagnostyka

  1. Zidentyfikuj zasadę Wyodrębnianie zmiennych, w której wystąpił błąd, i nazwę prefiksu. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to EV-XML-Age, a prefiks to apigee:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy nazwa prefiksu ustawionego w elemencie <Namespace> w elemencie <XMLPayload> jest zgodna z nazwą prefiksu podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa prefiks o nazwie apigee w elemencie <Namespace> zgodny z treścią komunikatu o błędzie:

    <?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. Sprawdź, czy element <Namespace> o określonym prefiksie zidentyfikowanym w kroku 2 ma prawidłowy identyfikator URI. Jeśli brakuje identyfikatora URI, jest to przyczyna błędu.

    W przedstawionej powyżej przykładowej zasadzie Wyodrębnianie zmiennych zwróć uwagę, że nie ma identyfikatora URI odpowiadającego elementowi <Namespace> o prefiksie apigee. W związku z tym pojawia się błąd:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
    

Rozdzielczość

Sprawdź, czy wszystkie elementy <Namespace> zdefiniowane z prefiksem mają odpowiedni identyfikator URI w zasadzie Wyodrębnianie zmiennych. Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: Duplicate prefix [prefix_name].

Przykładowy komunikat o błędzie

Error Saving Revision 2
ExtractVariables EV-XML-Age: Duplicate prefix apigee.

Przykładowy zrzut ekranu

Przyczyna

Ten błąd występuje, jeśli zasada Wyodrębnianie zmiennych ma ten sam prefiks zdefiniowany więcej niż raz w elemencie <Namespace> pod elementem <XMLPayload>.

Ten błąd występuje na przykład, ponieważ prefiks apigee jest zdefiniowany dwukrotnie, tak jak poniżej:

<Namespace prefix="apigee">http://www.apigee.com</Namespace>
<Namespace prefix="apigee">http://www.apigee.com</Namespace>

Diagnostyka

  1. Zidentyfikuj zasadę Wyodrębnianie zmiennych, w której wystąpił błąd, i nazwę prefiksu. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to EV-XML-Age, a prefiks to apigee:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy nazwa prefiksu ustawionego w elemencie <Namespace> w elemencie <XMLPayload> jest zgodna z nazwą prefiksu podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa prefiks o nazwie apigee w elemencie <Namespace> zgodny z treścią komunikatu o błędzie:

    <?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. Sprawdź, czy element <Namespace> o określonym prefiksie wskazany w kroku 2 został zdefiniowany więcej niż raz. Jeśli jest ono zdefiniowane więcej niż raz, to jest przyczyną błędu.

    W przedstawionej powyżej przykładowej zasadzie Wyodrębnianie zmiennych zwróć uwagę, że element <Namespace> z prefiksem apigee został zdefiniowany dwukrotnie, dlatego pojawia się błąd:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

Rozdzielczość

Upewnij się, że w zasadach Wyodrębnianie zmiennych jest tylko jedna definicja każdego prefiksu w elementach <Namespace>. Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no xpaths to evaluate in variable name.

Przykładowy komunikat o błędzie

Error Saving Revision 4
ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych nie zawiera elementu <XPath> w elemencie <XMLPayload>, wdrożenie serwera proxy interfejsu API nie powiedzie się z powyższym błędem.

Diagnostyka

  1. Zidentyfikuj nieudaną zasadę wyodrębniania zmiennych z komunikatu o błędzie. Na przykład w tym błędzie nazwa zasady to Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy zawiera on element <XMLPayload> bez elementu podrzędnego <XPath>. Jeśli tak, to jest jego przyczyna.

    Oto np. zasada Wyodrębnianie zmiennych zawierająca element <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>
    

    Ponieważ nie ma elementu <XPath>, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Rozdzielczość

Sprawdź, czy zasada Wyodrębnianie zmiennych ma zdefiniowany element <XPath> w elemencie <XMLPayload>. Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: XPath expression is empty in variable name.

Przykładowy komunikat o błędzie

Error Saving Revision 6
ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych zawiera puste wyrażenie <XPath> w elemencie <XMLPayload>, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Zidentyfikuj nieudaną zasadę wyodrębniania zmiennych z komunikatu o błędzie. Na przykład w tym błędzie nazwa zasady to Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy występuje element <XMLPayload> z pustym elementem podrzędnym <XPath>. Jeśli tak, to jest jego przyczyna.

    Oto np. zasada Wyodrębnianie zmiennych zawierająca element <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>
    

    Wdrożenie serwera proxy interfejsu API nie powiodło się, ponieważ w elemencie <XMLPayload> występuje pusty element <XPath>.

Rozdzielczość

Sprawdź, czy zasada Wyodrębnianie zmiennych ma zdefiniowany w elemencie <XMLPayload> niepusty i prawidłowy element <XPath>. Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.

Przykładowy komunikat o błędzie

Error Saving Revision 6
ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych nie zawiera elementu <JSONPath> w elemencie <JSONPayload>, wdrożenie serwera proxy interfejsu API nie powiedzie się z powyższym błędem.

Diagnostyka

  1. Zidentyfikuj nieudaną zasadę wyodrębniania zmiennych z komunikatu o błędzie. Na przykład w tym błędzie nazwa zasady to Extract-Variables-1:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy występuje element <JSONPayload> bez wymaganego elementu podrzędnego <JSONPath>. Jeśli tak, to jest jego przyczyna.

    Oto na przykład zasada Wyodrębnianie zmiennych zawierająca element <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>
    

    Ponieważ w elemencie <JSONPayload> nie ma zdefiniowanego elementu podrzędnego <JSONPath>, wdrożenie serwera proxy interfejsu API się nie uda.

Rozdzielczość

Sprawdź, czy zasada Wyodrębnianie zmiennych ma zdefiniowany element <JSONPath> w elemencie <JSONPayload>. Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
ExtractVariables [policy_name]: JSONPath expression is empty in variable name.

Przykładowy komunikat o błędzie

Error Saving Revision 6
ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych zawiera puste wyrażenie <JSONPath> w elemencie <JSONPayload>, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Zidentyfikuj nieudaną zasadę wyodrębniania zmiennych z komunikatu o błędzie. Na przykład w tym błędzie nazwa zasady to Extract-Variables-1:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy zawiera on element <JSONPayload> z pustym elementem podrzędnym <JSONPath>. Jeśli tak, to jest jego przyczyna.

    Oto na przykład zasada Wyodrębnianie zmiennych zawierająca element <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>
    

    Wdrożenie serwera proxy interfejsu API nie powiodło się, ponieważ w elemencie <JSONPayload> występuje pusty element <JSONPath>.

Rozdzielczość

Sprawdź, czy zasada Wyodrębnianie zmiennych ma zdefiniowany w elemencie <JSONPayload> niepusty i prawidłowy element <JSONPath>. Na przykład:

<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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]

Przykładowy komunikat o błędzie

Error Saving Revision 6
Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych nie zawiera atrybutu name w żadnym z elementów zasad, takich jak QueryParam, Header, FormParam czy Variable (o ile jest on wymagany), wdrożenie serwera proxy interfejsu API nie powiedzie się.

Ten błąd występuje np. wtedy, gdy w elemencie Variable brakuje atrybutu name.

Diagnostyka

  1. Wskaż nazwę zasady Wyodrębnianie zmiennych, w której wystąpił błąd, i element, w którym brakuje atrybutu name. Znajdziesz je w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Extract-Variables-1, a nazwa elementu to Variable:

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy wszystkie elementy o nazwie określonej w kroku 1 powyżej mają atrybut name. Jeśli w jakimś elemencie brakuje atrybutu nazwa, to jest przyczyną błędu.

    Na przykład zasada Wyodrębnianie zmiennych ma zdefiniowany element <Variable>:

    <?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>
    

    Zwróć uwagę, że w elemencie Variable brakuje atrybutu name, więc wdrożenie serwera proxy interfejsu API nie powiodło się.

Rozdzielczość

Upewnij się, że zasada Wyodrębnianie zmiennych zawiera wymagany atrybut name dla elementów QueryParam, Header, FormParam lub Variable. Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
Pattern [pattern] should have at least one variable in ExtractVariables stepDefinition [policy_name]

Przykładowy komunikat o błędzie

Error Saving Revision 7
Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych nie ma zmiennej określonej w elemencie <Pattern>, wdrożenie serwera proxy interfejsu API nie powiedzie się. Element <Pattern> wymaga nazwy zmiennej, w której będą przechowywane wyodrębnione dane.

Diagnostyka

  1. Zidentyfikuj nazwę zasady Wyodrębnianie zmiennych, w której wystąpił błąd, i wzorca, dla którego brakuje zmiennej. Znajdziesz je w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Extract-Variables-1, a nazwa elementu to /a/b:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy wzorzec ustawiony w elemencie <Pattern> jest zgodny ze wzorcem określonym w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa wzorzec /a/b zgodny z treścią komunikatu o błędzie:

    Oto przykład zasady Wyodrębnianie zmiennych mające 3 elementy <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. Sprawdź, czy element <Pattern> zidentyfikowany w kroku 2 nie ma zmiennej. Zmienne muszą być ujęte w nawiasy klamrowe. Jeśli wzorzec nie ma zmiennej, to jest przyczyną błędu.

    Element <Pattern> ze wzorcem /a/b nie zawiera zmiennej, więc wdrożenie serwera proxy interfejsu API nie powiodło się.

    <Pattern ignoreCase="true">/a/b/</Pattern>
    
    

Rozdzielczość

Sprawdź, czy wszystkie elementy <Pattern> zawierają zmienną (nazwę ujętą w nawiasy klamrowe). Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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.

Przykładowy zrzut ekranu

Przyczyna

Jeśli zasada Wyodrębnianie zmiennych zawiera wyrażenie <XPath>, w którym typ <Variable> jest zdefiniowany jako zbiór węzłów, ale nie można go przekonwertować na zbiór węzłów, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

  1. Zidentyfikuj zasadę Wyodrębnianie zmiennych, w której wystąpił błąd, i ścieżkę XPath, której nie można przekonwertować na zbiór węzłów. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie nazwa zasady to Extract-Variables-1, a ścieżka XPath to 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. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy zbiór XPath w elemencie <XPath> jest zgodny ze ścieżką XPath podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa jako 123, co jest zgodne z treścią komunikatu o błędzie:

    <?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. Sprawdź typ elementu <Variable> odpowiadający elementowi <XPath> określonemu w kroku 2 powyżej. Jeśli typ <Variable> to nodeset, to jest przyczyną błędu.

    Zwróć uwagę, że wyrażenie <XPath> to 123 w przykładowej zasadzie Wyodrębnianie zmiennych.

    <XPath>123</XPath>
    

    Nie można przekonwertować wyrażenia 123 na zbiór węzłów. Z tego powodu wdrożenie proxy interfejsu API się nie uda.

Rozdzielczość

Sprawdź, czy wyrażenia <XPath> używane w zasadzie Wyodrębnianie zmiennych mogą zostać przekonwertowane na zbiór węzłów, jeśli typ <Variable> jest zdefiniowany jako zbiór węzłów. Na przykład:

<?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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Deploying Revision [revision_number]
Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]

Przykładowy komunikat o błędzie

Error Deploying Revision 18 to test
Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.

Przykładowy zrzut ekranu

Przyczyna

Jeśli definicja elementu <Pattern> w którymkolwiek z elementów, takich jak URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload w zasadzie wyodrębniania zmiennych, jest nieprawidłowa, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Zidentyfikuj niedziałającą zasadę Wyodrębnianie zmiennych w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Extract-Variables-2:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. W pliku XML zasady „Wyodrębnianie zmiennych” sprawdź, czy występuje któryś z tych elementów i dodaj element <Pattern>. URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload.

    Oto przykładowa zasada Wyodrębnianie zmiennych z elementem <Pattern> wewnątrz elementu <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. Sprawdź definicję każdego elementu <Pattern>. Jeśli występuje dowolny element <Pattern> z nieprawidłową definicją, to jest przyczyną błędu.

    W przykładowej zasadzie Wyodrębnianie zmiennych widocznej powyżej zwróć uwagę na to, że definicja <Pattern> w elemencie <QueryParam> jest nieprawidłowa, dlatego wdrożenie serwera proxy interfejsu API się nie uda. Zobacz też Informacje o dopasowywaniu i tworzeniu zmiennych

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

Rozdzielczość

Upewnij się, że definicja elementu <Pattern> w elementach URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload w zasadzie Wyodrębnianie zmiennych jest prawidłowa. Na przykład:

<?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>

Zobacz też Informacje o dopasowywaniu i tworzeniu zmiennych.

XPathCompilationFailed

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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.

Przykładowy zrzut ekranu

Przyczyna

Jeśli prefiks lub wartość używana w elemencie <XPath> nie należy do żadnej z przestrzeni nazw zadeklarowanych w zasadzie wyodrębniania zmiennych, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Więcej informacji o przestrzeniach nazw, XPath i prefiksach znajdziesz w dokumencie Przestrzenie nazw XML i jego wpływ na XPath i XPath.

Diagnostyka

  1. Zidentyfikuj zasadę Wyodrębnianie zmiennych, w której wystąpił błąd, i ścieżkę XPath, której nie można skompilować. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie nazwa zasady to EV-XML-Age, a xpath to /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. W pliku XML zasad dotyczących wyodrębniania zmiennych sprawdź, czy zbiór XPath w elemencie <XPath> jest zgodny ze ścieżką XPath podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa jako /apigee:Directions/apigee:route/apigee:leg/apigee:name, co jest zgodne z treścią komunikatu o błędzie:

    <?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. Sprawdź elementy <Namespaces> i <XPath> w zasadzie Wyodrębnianie zmiennych. Jeśli określony <XPath> w komunikacie o błędzie używa prefiksu lub wartości, które nie należą do przestrzeni nazw zadeklarowanych w zasadzie Wyodrębnianie zmiennych, to jest przyczyną błędu.

    Zauważ, że konkretny element <XPath> używa prefiksu apigee w przykładowej zasadzie Wyodrębnianie zmiennych.

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

    Jednak prefiks apigee nie jest zdefiniowany w żadnym z elementów <Namespace>, dlatego kompilacja obiektu <XPath> kończy się niepowodzeniem wdrożenia.

Rozdzielczość

Sprawdź, czy wszystkie przestrzenie nazw, które są używane w elementach <XPath>, są zadeklarowane w zasadzie Wyodrębnianie zmiennych. Na przykład:

<?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>