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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

NothingToExtract

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych nie zawiera żadnego elementu URIPath, QueryParam, Header, FormParam, XMLPayload ani JSONPayload, wdrożenie serwera proxy interfejsu API nie powiedzie się, ponieważ nie ma niczego do wyodrębnienia.

Jak wskazano 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 określoną w komunikacie o błędzie. Jeśli zasada nie zawiera nawet jednego z tych elementów: URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload, to jest przyczyną błędu. Na przykład zasada Wyodrębnianie zmiennych nie zawiera żadnego z wymienionych wyżej elementów:

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

Ponieważ w zasadzie wyodrębniania zmiennych nie ma żadnych obowiązkowych elementów, wdrożenie serwera proxy interfejsu API się nie uda.

Rozdzielczość

Upewnij się, że zasada Wyodrębnianie zmiennych zawiera co najmniej 1 z tych obowiązkowych elementów: URIPath, QueryParam, Header, FormParam, XMLPayload i 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>

NONEmptyPrefixMappedToEmptyURI

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych ma prefiks w elemencie <Namespace> w elemencie <XMLPayload>, ale nie określono identyfikatora URI.

Diagnostyka

  1. Wskaż zasadę wyodrębniania zmiennych, w której wystąpił błąd, i podaj 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 zasady wyodrębniania zmiennych sprawdź, czy nazwa prefiksu ustawionego w elemencie <Namespace> w elemencie <XMLPayload> odpowiada nazwie prefiksu określonej w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa prefiks o nazwie apigee w elemencie <Namespace> zgodnym 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> z prefiksem określonym w kroku 2 ma prawidłowy identyfikator URI. Jeśli brakuje identyfikatora URI, to jest on przyczyną błędu.

    Zwróć uwagę na przykładową zasadę „Wyodrębnianie zmiennych” widoczną powyżej, że elementowi <Namespace> z prefiksem apigee nie ma identyfikatora URI. w związku z tym pojawia się błąd:

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

Rozdzielczość

Upewnij się, że wszystkie elementy <Namespace> zdefiniowane za pomocą prefiksu 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych ma ten sam prefiks zdefiniowany więcej niż raz w elemencie <Namespace> w elemencie <XMLPayload>.

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

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

Diagnostyka

  1. Wskaż zasadę wyodrębniania zmiennych, w której wystąpił błąd, i podaj 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 zasady wyodrębniania zmiennych sprawdź, czy nazwa prefiksu ustawionego w elemencie <Namespace> w elemencie <XMLPayload> odpowiada nazwie prefiksu określonej w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa prefiks o nazwie apigee w elemencie <Namespace> zgodnym 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> z określonym prefiksem określonym w kroku 2 został zdefiniowany więcej niż raz. Jeśli jest zdefiniowane więcej niż raz, to właśnie jest przyczyną błędu.

    W podanej wyżej przykładowej zasadzie wyodrębniania zmiennych zauważ, że element <Namespace> z prefiksem apigee został zdefiniowany dwukrotnie. w związku z tym pojawia się błąd:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

Rozdzielczość

Upewnij się, że dla każdego prefiksu w elementach <Namespace> w zasadzie Wyodrębnianie zmiennych występuje tylko 1 definicja. 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych nie zawiera elementu <XPath> w elemencie <XMLPayload>, wdrożenie serwera proxy interfejsu API nie powiedzie się z powodu powyższego błędu.

Diagnostyka

  1. Zidentyfikuj błędną 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 zasady wyodrębniania zmiennych sprawdź, czy jest w nim element <XMLPayload> bez elementu podrzędnego <XPath>. Jeśli tak, to to jest przyczyną błędu.

    Oto przykładowa zasada Wyodrębnianie zmiennych, która zawiera 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>
    

    Brak elementu <XPath>, dlatego nie udało się wdrożyć proxy interfejsu API.

Rozdzielczość

Upewnij się, że zasada Wyodrębnianie zmiennych zawiera element <XPath> zdefiniowany 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych zawiera w elemencie <XMLPayload> puste wyrażenie <XPath>, nie można wdrożyć serwera proxy interfejsu API.

Diagnostyka

  1. Zidentyfikuj błędną 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 zasady wyodrębniania zmiennych sprawdź, czy znajduje się element <XMLPayload> z pustym elementem podrzędnym <XPath>. Jeśli tak, to to jest przyczyną błędu.

    Oto przykładowa zasada Wyodrębnianie zmiennych, która zawiera 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>
    

    Element <XMLPayload> zawiera pusty element <XPath>, dlatego nie udało się wdrożyć serwera proxy interfejsu API.

Rozdzielczość

Sprawdź, czy zasada Wyodrębnianie zmiennych zawiera niepusty i prawidłowy element <XPath> zdefiniowany 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="address" type="string">
            <XPath>/address</XPath>
        </Variable>
    </XMLPayload>
</ExtractVariables>

NoJSONPathsToEvaluate

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych nie zawiera elementu <JSONPath> w elemencie <JSONPayload>, wdrożenie serwera proxy interfejsu API nie powiedzie się z powodu powyższego błędu.

Diagnostyka

  1. Zidentyfikuj błędną 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 nieprawidłowym kodzie XML zasady wyodrębniania zmiennych sprawdź, czy istnieje element <JSONPayload> bez wymaganego elementu podrzędnego <JSONPath>. Jeśli tak, to to jest przyczyną błędu.

    Oto przykładowa zasada Wyodrębnianie zmiennych, która zawiera 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>
    

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

Rozdzielczość

Upewnij się, że zasada Wyodrębnianie zmiennych zawiera element <JSONPath> zdefiniowany 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych zawiera w elemencie <JSONPayload> puste wyrażenie <JSONPath>, nie można wdrożyć serwera proxy interfejsu API.

Diagnostyka

  1. Zidentyfikuj błędną 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 zasady wyodrębniania zmiennych sprawdź, czy jest tam element <JSONPayload> z pustym elementem podrzędnym <JSONPath>. Jeśli tak, to to jest przyczyną błędu.

    Oto przykładowa zasada Wyodrębnianie zmiennych, która zawiera 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>
    

    Element <JSONPayload> zawiera pusty element <JSONPath>, dlatego nie udało się wdrożyć serwera proxy interfejsu API.

Rozdzielczość

Sprawdź, czy zasada Wyodrębnianie zmiennych zawiera niepusty i prawidłowy element <JSONPath> zdefiniowany w elemencie <JSONPayload>. 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych nie zawiera atrybutu name w żadnym elemencie zasad, takim jak QueryParam, Header, FormParam czy Variable, jeśli jest on wymagany, wdrożenie serwera proxy interfejsu API się nie uda.

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

Diagnostyka

  1. Wskaż nazwę zasady wyodrębniania zmiennych, w której wystąpił błąd, i elementu, w którym brakuje atrybutu name. Te elementy znajdziesz 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 zasady wyodrębniania zmiennych sprawdź, czy wszystkie elementy o nazwie określonej na podstawie kroku 1 powyżej mają atrybut name. Jeśli brak jest w jakimś elemencie atrybutu name, to właśnie on jest przyczyną błędu.

    Na przykład ta zasada Wyodrębnianie zmiennych zawiera 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 się nie uda.

Rozdzielczość

Upewnij się, że zasada wyodrębniania zmiennych zawiera wymagany atrybut name w przypadku 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych nie zawiera zmiennej określonej w elemencie <Pattern>, nie można wdrożyć serwera proxy interfejsu API. Element <Pattern> wymaga nazwy zmiennej, w której będą przechowywane wyodrębnione dane.

Diagnostyka

  1. Wskaż nazwę zasady wyodrębniania zmiennych, w której wystąpił błąd, oraz wzorzec, dla którego brakuje zmiennej. Te elementy znajdziesz 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 zasady 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, który pasuje do tekstu z komunikatu o błędzie:

    Oto np. zasada Wyodrębnianie zmiennych, która zawiera 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> wskazany w kroku 2 nie zawiera zmiennej. Zmienne musi być ujęta w nawiasy klamrowe. Jeśli wzór nie ma zmiennej, który jest przyczyną błędu.

    Element <Pattern> z wzorcem /a/b nie zawiera zmiennej. w związku z tym wdrożenie serwera proxy interfejsu API się nie uda

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

Rozdzielczość

Sprawdź, czy wszystkie elementy <Pattern> zawierają zmienną (nazwę zawartą w klatce klamrowej 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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ębniania zmiennych zawiera wyrażenie <XPath>, w którym typ <Variable> jest zdefiniowany jako nodeset, 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ębniania zmiennych, w której wystąpił błąd, oraz wskaż ś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 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 zasady wyodrębniania zmiennych sprawdź, czy ścieżka XPath ustawiona w elemencie <XPath> jest zgodna z ścieżką XPath podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa jako 123, co odpowiada 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 atrybutowi <XPath> wymienionemu w kroku 2 powyżej. Jeśli typ <Variable> to nodeset, to jest przyczyną błędu.

    Zwróć uwagę, że wyrażenie <XPath> w przykładowej zasadzie wyodrębniania zmiennych ma wartość 123.

    <XPath>123</XPath>
    

    Wyrażenie 123 nie może zostać przekonwertowane na zbiór węzłów. Z tego powodu wdrożenie serwera proxy interfejsu API się nie udaje.

Rozdzielczość

Sprawdź, czy wyrażenia <XPath> używane w zasadzie wyodrębniania 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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> jest nieprawidłowa w którymkolwiek z elementów, takich jak URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload w ramach zasady wyodrębniania zmiennych, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

  1. Zidentyfikuj niedziałającą zasadę wyodrębniania zmiennych z komunikatu 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ębniania zmiennych sprawdź, czy występuje któryś z tych elementów i dołącz element <Pattern>: URIPath, QueryParam, Header, FormParam, XMLPayload lub JSONPayload.

    Oto przykładowa zasada Wyodrębnianie zmiennych z elementem <Pattern> w elemencie <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 z elementów <Pattern>. Jeśli element <Pattern> ma nieprawidłową definicję, to to jest przyczyną błędu.

    Zwróć uwagę na przykładową zasadę wyodrębniania zmiennych w widocznym powyżej przykładzie, że definicja <Pattern> w elemencie <QueryParam> jest nieprawidłowa. w związku z tym 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>

Przeczytaj też Informacje o dopasowywaniu i tworzeniu zmiennych.

XPathCompilationFailed

Komunikat o błędzie

Nie udało się wdrożyć serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API z tym komunikatem 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 zadeklarowanych przestrzeni nazw w zasadzie wyodrębniania zmiennych, wdrożenie serwera proxy interfejsu API się nie uda.

Więcej informacji o przestrzeniach nazw, ścieżce XPath i prefiksach znajdziesz w artykule Przestrzenie nazw XML i ich wpływ na XPath i CSS.

Diagnostyka

  1. Określ zasadę wyodrębniania zmiennych, w której wystąpił błąd, oraz wskaż ścieżkę XPath, której nie udało się skompilować. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to EV-XML-Age, a parametr 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 zasady wyodrębniania zmiennych sprawdź, czy ścieżka XPath ustawiona w elemencie <XPath> jest zgodna z ś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 odpowiada 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 konkretna właściwość <XPath> wskazana w komunikacie o błędzie używa prefiksu lub wartości, która nie jest częścią przestrzeni nazw zadeklarowanych w zasadzie wyodrębniania zmiennych, to jest przyczyną błędu.

    Zwróć uwagę, że określona wartość <XPath> używa prefiksu apigee w przykładowej zasadzie wyodrębniania zmiennych.

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

    Jednak prefiks apigee nie jest zdefiniowany w żadnym z elementów <Namespace>; w związku z tym kompilacja obiektu <XPath> nie uda się i nie uda się wdrożyć.

Rozdzielczość

Sprawdź, czy wszystkie przestrzenie nazw używane w elementach <XPath> są zadeklarowane w zasadzie wyodrębniania 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>