Değişkenleri Ayıklama politikası dağıtım hatasıyla ilgili sorunları giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

NothingToExtract

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'nda URIPath, QueryParam, Header, FormParam, XMLPayload veya JSONPayload öğelerinden hiçbiri yoksa çıkarılacak bir şey olmadığından API Proxy'sinin dağıtımı başarısız olur.

Hata mesajında belirtildiği gibi, Değişkenleri Ayıklama politikasında şu öğelerden en az biri bulunmalıdır: URIPath, QueryParam, Header, FormParam, XMLPayload veya JSONPayload.

Teşhis

Hata mesajında belirtilen Değişkenleri Ayıklama politikasını inceleyin. Politikada şu öğelerden biri bile yoksa: URIPath, QueryParam, Header, FormParam, XMLPayload veya JSONPayload, hatanın nedeni budur. Örneğin, aşağıdaki Değişkenleri Ayıklama politikasında yukarıda belirtilen öğelerin hiçbiri yoktur:

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

Zorunlu öğelerin hiçbiri Değişkenleri Ayıklama politikasında bulunmadığından API proxy'sinin dağıtımı başarısız olur.

Çözünürlük

Değişkenleri Ayıkla politikasında şu zorunlu öğelerden en az birinin bulunduğundan emin olun: URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload. Örneğin:

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

NONBlankPrefixMappedToBlankURI

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Bu hata, Değişkenleri Ayıklama Politikası'nın <XMLPayload> öğesi altındaki <Namespace> öğesinde tanımlanmış bir ön eki varsa ancak hiçbir URI tanımlanmadıysa ortaya çıkar.

Teşhis

  1. Hatanın oluştuğu yerde Değişkenleri Ayıklama politikasını ve ön ekin adını tanımlayın. Bu öğelerin ikisini de hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı EV-XML-Age , ön ek ise apigee şeklindedir:

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, <XMLPayload> öğesi altındaki <Namespace> öğesinde ayarlanan ön ekin adının, hata mesajında tanımlanan ön ek adıyla eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politika <Namespace> öğesinde apigee adlı bir ön ek belirtir. Bu ön ek , hata mesajındakiyle eşleşir:

    <?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. 2. adımda tanımlanan belirli ön eke sahip <Namespace> öğesinin geçerli bir URI'ye sahip olup olmadığını doğrulayın. URI eksikse hatanın nedeni budur.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasında, apigee ön ekine sahip <Namespace> öğesine karşılık gelen bir URI olmadığına dikkat edin. Bu nedenle şu hatayı alırsınız:

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

Çözünürlük

Bir önekle tanımlanan tüm <Namespace> öğelerinin, Değişkenleri Ayıkla politikasında karşılık gelen bir URI'ye sahip olduğundan emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Bu hata, Değişkenleri Ayıklama Politikası'nın aynı ön ek, <XMLPayload> öğesi altındaki <Namespace> öğesinde birden fazla kez tanımlanmışsa ortaya çıkar.

Örneğin, bu hata, apigee öneki aşağıda gösterildiği gibi iki kez tanımlandığından oluşur:

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

Teşhis

  1. Hatanın oluştuğu yerde Değişkenleri Ayıklama politikasını ve ön ekin adını tanımlayın. Bu öğelerin ikisini de hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı EV-XML-Age, ön ek ise apigee şeklindedir:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, <XMLPayload> öğesi altındaki <Namespace> öğesinde ayarlanan ön ekin adının, hata mesajında tanımlanan ön ek adıyla eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politika <Namespace> öğesinde apigee adlı bir ön ek belirtir. Bu ön ek , hata mesajındakiyle eşleşir:

    <?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. 2. adımda tanımlanan belirli ön eke sahip <Namespace> öğesinin bir defadan fazla tanımlanıp tanımlanmadığını belirleyin. Birden çok kez tanımlanmışsa hatanın nedeni budur.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasında, apigee önekine sahip <Namespace> öğesinin iki kez tanımlandığına dikkat edin. Bu nedenle şu hatayı alırsınız:

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
    

Çözünürlük

Değişkenleri Ayıklama politikasındaki <Namespace> öğelerinde her ön ek için yalnızca bir tanım bulunduğundan emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'nın <XMLPayload> öğesi içinde <XPath> öğesi yoksa API proxy'sinin dağıtımı, yukarıda gösterilen hatayı vererek başarısız olur.

Teşhis

  1. Hata mesajındaki başarısız Değişkenleri Ayıklama politikasını belirleyin. Örneğin, aşağıdaki hatada politika adı Extract-Variables-1 şeklindedir:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, <XPath> alt öğesi olmadan bir <XMLPayload> öğesi olup olmadığını kontrol edin. Öyleyse, hatanın nedeni budur.

    Örneğin, <XMLPayload> öğesi bulunan bir Değişkenleri Ayıklama politikasını burada görebilirsiniz:

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

    <XPath> öğesi bulunmadığından API Proxy'sinin dağıtımı başarısız olur.

Çözünürlük

Değişkenleri Ayıklama politikasının, <XMLPayload> öğesi altında tanımlanmış bir <XPath> öğesine sahip olduğundan emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'nın <XMLPayload> öğesinde boş bir <XPath> ifadesi varsa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hata mesajındaki başarısız Değişkenleri Ayıklama politikasını belirleyin. Örneğin, aşağıdaki hatada politika adı Extract-Variables-1 şeklindedir:

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    
  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, boş bir <XPath> alt öğesine sahip bir <XMLPayload> öğesi olup olmadığını belirleyin. Öyleyse, hatanın nedeni budur.

    Örneğin, <XMLPayload> öğesi bulunan bir Değişkenleri Ayıklama politikasını burada görebilirsiniz:

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

    <XMLPayload> öğesi içinde boş bir <XPath> öğesi bulunduğu için API Proxy'sinin dağıtımı başarısız olur.

Çözünürlük

Değişkenleri Ayıklama Politikası'nın, <XMLPayload> öğesi altında tanımlanmış boş ve geçerli bir <XPath> öğesine sahip olduğundan emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'nın <JSONPayload> öğesi içinde <JSONPath> öğesi yoksa API proxy'sinin dağıtımı, yukarıda gösterilen hatayı vererek başarısız olur.

Teşhis

  1. Hata mesajındaki başarısız Değişkenleri Ayıklama politikasını belirleyin. Örneğin, aşağıdaki hatada politika adı Extract-Variables-1 şeklindedir:

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    
  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, gerekli <JSONPath> alt öğesi olmadan bir <JSONPayload> öğesi olup olmadığını belirleyin. Öyleyse, hatanın nedeni budur.

    Örneğin, <JSONPayload> öğesine sahip bir Değişkenleri Ayıklama politikasını burada görebilirsiniz:

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

    <JSONPayload> öğesinin altında tanımlı bir <JSONPath> alt öğesi olmadığından API Proxy'sinin dağıtımı başarısız olur.

Çözünürlük

Değişkenleri Ayıklama politikasının, <JSONPayload> öğesi altında tanımlanmış bir <JSONPath> öğesine sahip olduğundan emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'nın <JSONPayload> öğesinde boş bir <JSONPath> ifadesi varsa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hata mesajındaki başarısız Değişkenleri Ayıklama politikasını belirleyin. Örneğin, aşağıdaki hatada politika adı Extract-Variables-1 şeklindedir:

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    
  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, boş bir <JSONPath> alt öğesine sahip bir <JSONPayload> öğesi olup olmadığını doğrulayın. Öyleyse, hatanın nedeni budur.

    Örneğin, <JSONPayload> öğesi olan bir Değişkenleri Ayıklama politikasını burada görebilirsiniz:

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

    <JSONPayload> öğesi içinde boş bir <JSONPath> öğesi bulunduğu için API Proxy'sinin dağıtımı başarısız olur.

Çözünürlük

Değişkenleri Ayıklama Politikası'nın, <JSONPayload> öğesi altında tanımlanmış boş ve geçerli bir <JSONPath> öğesine sahip olduğundan emin olun. Örneğin:

<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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası, gerekli olduğu durumlarda QueryParam, Header, FormParam veya Variable gibi politika öğelerinin hiçbirinde name özelliğine sahip değilse API proxy'sinin dağıtımı başarısız olur.

Örneğin bu hata, bir Variable öğesinde name özelliği eksikse ortaya çıkar.

Teşhis

  1. Hatanın oluştuğu Değişkenleri Çıkar politikasının adını ve name özelliğinin eksik olduğu öğeyi tanımlayın. Bu öğeleri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı Extract-Variables-1, öğe adı ise Variable şeklindedir:

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    
  2. Başarısız Değişkenleri Ayıklama politika XML'inde, yukarıdaki 1. adımda belirlenen ada sahip tüm öğelerin bir name özelliğine sahip olduğundan emin olun. Ad özelliğinin eksik olduğu bir öğe varsa hatanın nedeni budur.

    Örneğin, aşağıdaki Değişkenleri Ayıklama politikasında <Variable> öğesi tanımlanmıştır:

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

    Variable öğesinde name özelliğinin eksik olduğuna, bu nedenle API Proxy'sinin dağıtımının başarısız olduğuna dikkat edin.

Çözünürlük

Değişkenleri Ayıklama Politikası'nın QueryParam, Header, FormParam veya Variable öğeleri için gerekli name özelliğini içerdiğinden emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'nın <Pattern> öğesi içinde belirtilmiş bir değişken yoksa API proxy'sinin dağıtımı başarısız olur. <Pattern> öğesi, ayıklanan verilerin depolanacağı değişkenin adını gerektirir.

Teşhis

  1. Hatanın oluştuğu Değişkenleri Çıkar politikasının adını ve Değişkenin eksik olduğu kalıbı tanımlayın. Bu öğeleri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı Extract-Variables-1, öğe adı ise /a/b şeklindedir:

    Pattern /a/b/ should have at least one variable in ExtractVariables stepDefinition ExtractVariables-1.
    
  2. Başarısız Değişkenleri Ayıklama politika XML'inde, <Pattern> öğesinde ayarlanan kalıbın, hata mesajında (yukarıdaki 1. adım) tanımlanan kalıpla eşleştiğini doğrulayın. Örneğin, aşağıdaki politika, hata mesajındakiyle eşleşen bir /a/b kalıbı belirtir:

    Örneğin, üç <Pattern> öğesi içeren bir Değişkenleri Ayıklama politikasını burada görebilirsiniz:

    <?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. 2. adımda tanımlanan <Pattern> öğesinin değişkeni olup olmadığını kontrol edin. Değişkenler süslü ayraç içine alınmalıdır. Kalıpta bir değişken yoksa hatanın nedeni budur.

    /a/b kalıbına sahip <Pattern> öğesi değişken içermiyor. Bu nedenle, API Proxy'si dağıtımı başarısız oluyor

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

Çözünürlük

<Pattern> öğelerinin bir değişken (kıvrık ayraçlar içine alınmış bir ad) içerdiğinden emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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.

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'nda, <Variable> türünün nodeset olarak tanımlandığı bir <XPath> ifadesi varsa ancak ifade düğüm kümesine dönüştürülemiyorsa API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hatanın oluştuğu yerde Değişkenleri Ayıklayın politikasını ve düğüm kümesine dönüştürülemeyen XPath'i tanımlayın. Bu öğelerin ikisini de hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı Extract-Variables-1 ve XPath 123'dır.

    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. Başarısız Değişkenleri Ayıklama politika XML'inde, <XPath> öğesinde ayarlanan XPath'in, hata mesajında tanımlanan XPath ile eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politika, hata mesajındakiyle eşleşen değerini 123 olarak belirtir:

    <?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. Yukarıdaki 2. adımda tanımlanan <XPath> öğesine karşılık gelen <Variable> öğesinin türünü inceleyin. <Variable> türü nodeset ise hatanın nedeni budur.

    Örnek Değişkenleri Ayıklama politikasında <XPath> ifadesinin 123 olduğuna dikkat edin.

    <XPath>123</XPath>
    

    123 ifadesi düğüm kümesine dönüştürülemez. Bu nedenle, API Proxy'si dağıtımı başarısız olur.

Çözünürlük

<Variable> türü düğüm kümesi olarak tanımlanırsa Değişkenleri Ayıklama politikasında kullanılan <XPath> ifadelerinin düğüm kümesine dönüştürülebildiğinden emin olun. Örneğin:

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

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Değişkenleri Ayıklama Politikası'ndaki URIPath, QueryParam, Header, FormParam, XMLPayload veya JSONPayload gibi öğelerin herhangi birinde <Pattern> öğe tanımı geçersizse API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. Hata mesajında başarısız olan Değişkenleri Ayıklama politikasını belirleyin. Örneğin, aşağıdaki hatada politika adı Extract-Variables-2 şeklindedir:

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    
  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, bu öğelerden herhangi birinin mevcut olup olmadığını ve bir <Pattern> öğesi içerip içermediğini kontrol edin: URIPath, QueryParam, Header, FormParam, XMLPayload veya JSONPayload.

    Örneğin, <QueryParam> içinde <Pattern> öğesi bulunan bir Değişkenleri Ayıklama politikası örneğini burada görebilirsiniz:

    <?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. <Pattern> öğelerinin her birinin tanımını inceleyin. Geçersiz tanıma sahip bir <Pattern> öğesi varsa hatanın nedeni budur.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasında, <QueryParam> öğesindeki <Pattern> tanımının geçersiz olduğuna, bu nedenle API Proxy'sinin dağıtılmasının başarısız olduğuna dikkat edin. Eşleme ve değişken oluşturma hakkında bölümünü de inceleyin

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

Çözünürlük

Değişkenleri Ayıkla politikasındaki URIPath, QueryParam, Header, FormParam, XMLPayload veya JSONPayload öğelerindeki <Pattern> öğesi tanımının geçerli olduğundan emin olun. Örneğin:

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

Eşleşme ve değişken oluşturma hakkında başlıklı makaleyi de inceleyin.

XPathCompilationFailed

Hata mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

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

Örnek hata mesajı

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.

Örnek ekran görüntüsü

Neden

<XPath> öğesinde kullanılan ön ek veya değer, Değişkenleri Ayıklama Politikası'nda belirtilen ad alanlarının herhangi birinin parçası değilse API proxy'sinin dağıtımı başarısız olur.

Ad alanları, XPath ve ön ek hakkında daha fazla bilgiyi XML Ad Alanları ve XPath ve XSLT'yi Nasıl Etkiler? bölümünde bulabilirsiniz.

Teşhis

  1. Hatanın oluştuğu yerde Değişkenleri Ayıklama politikasını ve derlenemiyor olan XPath'i tanımlayın. Bu öğelerin ikisini de hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı EV-XML-Age , xpath ise /apigee:Directions/apigee:route/apigee:leg/apigee:name şeklindedir.

    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. Başarısız Değişkenleri Ayıklama politika XML'inde, <XPath> öğesinde ayarlanan XPath'in, hata mesajında tanımlanan XPath ile eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politika, hata mesajındakiyle eşleşen değerini /apigee:Directions/apigee:route/apigee:leg/apigee:name olarak belirtir:

    <?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. Değişkenleri Ayıklama politikasındaki <Namespaces> ve <XPath> öğelerini inceleyin. Hata mesajında belirtilen belirli <XPath>, Değişkenleri Ayıklama politikasında belirtilen ad alanlarının parçası olmayan bir ön ek veya değer kullanıyorsa hatanın nedeni budur.

    İlgili <XPath> politikasının, Değişkenleri Ayıklama politikasında apigee ön ekini kullandığına dikkat edin.

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

    Bununla birlikte, apigee ön eki <Namespace> öğelerinin hiçbirinde tanımlı değildir. Bu nedenle, <XPath> derlemesi dağıtım hatasına neden olur.

Çözünürlük

<XPath> öğelerinde kullanılan tüm ad alanlarının Değişken Ayıklama Politikası'nda belirtildiğinden emin olun. Örneğin:

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