Değişkenleri Ayıklama çalışma zamanı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Git: Apigee X belgeleri.
bilgi

SourceMessageNotAvailable

Hata kodu

steps.extractvariables.SourceMessageNotAvailable

Hata yanıtı gövdesi

{
  "fault": {
      "faultstring": "[variable_name] message is not available for ExtractVariable: [policy_name]",
      "detail": {
          "errorcode": "steps.extractvariables.SourceMessageNotAvailable"
      }
  }
}

Neden

Bu hata, Değişkenleri Ayıklama politikasının <Source> öğesinde belirtilen ileti değişkeni şunlardan biri olduğunda ortaya çıkar:

  • kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
  • çözülemiyor (tanımlanmamış)

Örneğin bu hata, Değişkenleri Ayıklama politikası istek akışı, ancak <Source> öğesi response veya error olarak ayarlanmış değişkenine eklenmelidir.

Teşhis

  1. Hatanın oluştuğu Değişkenleri Ayıklama politikasını ve mevcut olmayan değişkenin adını tanımlayın. Bu öğelerin ikisini de hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde politika adı ExtractVariables-1, değişken ise response şeklindedir:

    "faultstring": "response message is not available for ExtractVariable: ExtractVariables-1"

  2. Başarısız Değişkenleri Ayıklama politikası XML'inde değişkenin adının hata dizesinde tanımlanan değişken adıyla eşleşir (1. adım) bölümüne bakın). Örneğin, aşağıdaki Değişkenleri Ayıkla politikası, öğede response adlı bir değişken belirtir. Bu değişken, hata dizesindekiyle eşleşir:

    <ExtractVariables name="ExtractVariables-1">
        <Source>response</Source>
        <URIPath>
            <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
        </URIPath>
        <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    
  3. <Source> öğesinde kullanılan değişkenin tanımlı olup olmadığını ve Değişkenleri Ayıklama politikasının yürütüldüğü akışta kullanılabilir olup olmadığını belirleyin.

  4. Değişken şu durumlarda:

    • Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
    • çözülemiyor (tanımlanmamış)

    hatanın nedeni budur.

    Örnek olarak, yukarıda gösterilen Değişkenleri Ayıklama politikasının istek akışında çalıştığını varsayalım. response değişkeninin, Değişkenleri Ayıklama politikasının <Source> öğesinde kullanıldığını unutmayın. response değişkeni yalnızca yanıt akışında kullanılabilir.

    response değişkeni istek akışında bulunmadığından şu hata kodunu alırsınız: steps.extractvariables.SourceMessageNotAvailable.

Çözünürlük

Başarısız Değişkenleri Ayıklama politikasının <Source> öğesinde ayarlanan değişkenin tanımlandığından ve politikanın yürütüldüğü akışta bulunduğundan emin olun.

Yukarıda gösterilen örnek Değişkenleri Ayıklama politikasını düzeltmek için <Source> öğesini, request değişkenini istek akışında var olduğu şekilde kullanacak şekilde değiştirebilirsiniz:

<ExtractVariables name="ExtractVariables-1">
    <Source>request</Source>
    <URIPath>
        <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
    </URIPath>
    <VariablePrefix>urirequest</VariablePrefix>
</ExtractVariables>

SetVariableFailed

Hata kodu

steps.extractvariables.SetVariableFailed

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Failed to set variable [variable_name] value [variable_value] from ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.SetVariableFailed"
        }
    }
}

Neden

Bu hata, Değişkenleri Ayıklama politikası ilgili değeri değişken olarak ayarlayamadığında ortaya çıkar. Bu durum genellikle, adları noktayla ayrılmış iç içe yerleştirilmiş biçimde aynı kelimelerle başlayan birden fazla değişkene değer atamaya çalıştığınızda ortaya çıkar.

Örneğin, var.color değişkenine bir değer oluşturduğunuzu/atadığınızı varsayalım. Bu durumda, color bir nesne düğümü olarak ayrılır. Ardından başka bir değişkene (var.color.next) değer atamaya çalışırsanız color zaten ayrılmış olduğu ve ona başka bir değişkenin atanmasına izin verilmediği için bu işlem başarısız olur.

Teşhis

  1. Hatanın oluştuğu Değişkenleri Ayıklama politikasını ve değeri ayarlanamayan değişkenin adını tanımlayın. Bu öğelerin ikisini de hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde politika adı ExtractColors, değişken ise var.color.next şeklindedir:

    "faultstring": "Failed to set variable var.color.next value red from ExtractVariables: ExtractColors"

  2. Başarısız Değişkenleri Ayıklama politikası XML'inde değişkenin adının hata dizesinde tanımlanan değişken adıyla eşleşir (yukarıdaki 1. adım). Örneğin, Örneğin, aşağıdaki politika bir istek sorgusundan değer atamaya çalışıyor: parametresini var.color.next adlı bir değişkene (hata dizesinde görünen değer) ekleyin:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{color.next}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
  3. Başarısız Değişkenleri Ayıklama politikasında kullanılan tüm değişken adlarını inceleyin. Adı hata dizesinde tanımlanan değişken adıyla aynı adla başlayan başka bir değişkene bir değer atadıysanız (yukarıdaki 1. adım) hatanın nedeni budur.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasında aşağıdaki noktalara dikkat edin:

    • color adlı sorgu parametresinin değeri ilk olarak var.color değişkenine atanır(Not: var, <VariablePrefix> öğesinde ayarlanan tüm değişkenlerin önekidir)
    • Bir sonraki atamada, nextcolor sorgu parametresinin değeri var.color.next adlı başka bir değişkene atandı.
    • var.color zaten tahsis edilmiş olduğundan Değişkenleri Ayıklama politikası iç içe yerleştirilmiş başka bir değişken var.color.next atayamaz. Bu durumda şu hata kodunu alırsınız: steps.extractvariables.SetVariableFailed

Çözünürlük

  1. Adları noktayla ayrılmış biçimde iç içe yerleştirilmiş aynı kelimelerle başlayan birden fazla değişken adınız olmadığından emin olun.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasını düzeltmek için var.nextcolor. değişken adını kullanmak için var.color.next değişken adı

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractColors">
        <DisplayName>ExtractColors</DisplayName>
        <Source>request</Source>
        <QueryParam name="color">
            <Pattern ignoreCase="true">{color}</Pattern>
        </QueryParam>
        <QueryParam name="nextcolor">
            <Pattern ignoreCase="true">{nextcolor}</Pattern>
        </QueryParam>
        <VariablePrefix>var</VariablePrefix>
    </ExtractVariables>
    
    

Daha Fazla Bilgi

Daha fazla bilgiyi bu topluluk gönderisinde bulabilirsiniz.

InvalidJSONPath

Hata kodu

steps.extractvariables.InvalidJSONPath

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Invalid JSON path [path_name] in policy [policy_name].",
        "detail": {
            "errorcode": "steps.extractvariables.InvalidJSONPath"
        }
    }
}

Neden

Bu hata, <JSONPath> öğesinde geçersiz bir JSON yolu kullanılırsa ortaya çıkar çıkartacağız. Örneğin, bir JSON yükü Name nesnesini belirtir, ancak Değişkenleri Ayıklama'da yol olarak Name öğesini belirtirsiniz bu hata oluşur.

Teşhis

  1. Hatanın oluştuğu ve geçersiz JSON yolu. Bu öğelerin ikisini defaultstring hata yanıtı. Örneğin, aşağıdaki hata dizesinde politika adı ExtractJSONVariables ve geçersiz JSON yolu $.Name:

    "faultstring": "Invalid JSON path $.Name in policy ExtractJSONVariables."

  2. Başarısız Değişkenleri Ayıklama politikası XML'inde, <JSONPath> öğesi, hata dizesinde belirtilen yolla eşleşir (yukarıdaki 1. adım). Örneğin, aşağıdaki Değişkenleri Ayıklama politikası, $.Name JSON yolunu belirtir. hata dizesindeki değerle eşleşir:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.Name</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
  3. <Source> öğesini inceleyin ve değişkeni hangi JSON yükünden çıkarmaya çalıştığınızı belirleyin. Örneğin, <Source> öğesi request değerine ayarlanırsa politika, JSON yükünü istek nesnesinden ayıklar. response olarak ayarlanırsa yanıt nesnesi olur.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasında <Source> öğesi response olarak ayarlanırsa değişkenler JSON yükünden çıkarılır. biraz zaman alabilir.

    <Source>response</Source>

  4. Uygun JSON yükünü (3. adımda belirlenir) inceleyin ve <JSONPath> öğesinde belirtilen nesneye sahip olması gerekir. JSON yükü o nesneye sahip değilse hatanın nedeni budur.

    Örneğin, aşağıdaki JSON yanıtı yükünden değişkenleri ayıklamaya çalıştığınızı varsayalım:

    {
      "firstName":"John",
      "lastName":"Doe",
      "city":"San Jose",
      "state":"CA"
    }
    

    JSON yanıt yükünde Name nesnesi bulunmadığından Değişkenleri Çıkarma politikası başarısız olur ve şu hata kodunu alırsınız: steps.extractvariables.InvalidJSONPath.

Çözünürlük

  1. Değişkenleri Ayıkla politikasının <JSONPath> öğesinde yalnızca değişkenlerin ayıklandığı JSON Yük'ünün parçası olan nesnelerin belirtildiğinden emin olun.

    Yukarıda gösterilen örnek Değişkenleri Ayıklama politikasını düzeltmek için <JSONPath> öğesini, örnek JSON yanıt yükünde bulunan nesnelerden birini belirtecek şekilde değiştirebilirsiniz (örneğin, firstName ve lastName nesneleri geçerlidir):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractJSONVariables">
        <Source>response</Source>
        <JSONPayload>
            <Variable name="name" type="string">
                <JSONPath>$.firstName</JSONPath>
            </Variable>
        </JSONPayload>
       <VariablePrefix>employee</VariablePrefix>
    </ExtractVariables>
    
    

ExecutionFailed

Hata kodu

steps.extractvariables.ExecutionFailed

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Failed to execute the ExtractVariables: [policy_name]",
        "detail": {
            "errorcode": "steps.extractvariables.ExecutionFailed"
        }
    }
}

Olası nedenler

Bu hatanın olası nedenleri şunlardır:

Neden Açıklama
Eksik giriş yükü Giriş yükü (JSON, XML) boş.
Geçersiz veya Bozuk Giriş Politikaya iletilen giriş (JSON, XML vb.) geçersiz veya hatalı biçimlendirilmiş.

Neden: Eksik giriş yükü

Değişkenleri Ayıklama politikasının, değişkenleri bir JSON veya XML yükünden çıkarması gerekiyorsa ancak <Source> öğesinde belirtilen değişkenin içeriği (yükü) boşsa bu hata oluşur.

Örneğin, Değişkenleri Ayıkla politikasındaki <Source> öğesi request veya response olarak ayarlanmışsa ve JSON veya XML yükü içermesi gerekiyorsa ancak yük boşsa hata meydana gelir.

Teşhis

  1. Hatanın oluştuğu Değişkenleri Ayıklama politikasını belirleyin. Daha fazla bu bilgileri hata yanıtının hata dizesi öğesine ekleyin. Örneğin, aşağıdaki hata dizesinde politika adı ExtractJSONVariables'tür:

    "faultstring": "Failed to execute the ExtractVariables: ExtractXMLVariables"

  2. Başarısız Değişkenleri Ayıkla XML'indeki <Source> öğesini inceleyin ve değişkenlerin ayıklandığı giriş türünü belirleyin. Örneğin, aşağıdaki Değişkenleri Ayıklama politikasında <Source> öğesi response olarak ayarlanmış olup XML yükündeki değişkenleri ayıklar:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractXMLVariables" async="false" continueOnError="false" enabled="true">
        <XMLPayload>
            <Namespaces/>
            <Variable name="City" type="string">
                <XPath>/city</XPath>
            </Variable>
        </XMLPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. Değişkenleri Ayıklama politikası tarafından ayrıştırılan girişin boş olup olmadığını kontrol edin. Giriş boşsa hatanın nedeni budur.

    Yukarıda gösterilen örnek Değişkenleri Ayıklama politikasında, arka uç sunucusu tarafından gönderilen yanıt yükü (yanıt gövdesi) boştu.

    XML yanıt yükü boş olduğundan şu hata kodunu alırsınız:

    steps.extractvariables.ExecutionFailed

    Bu hata, <Source> öğesi request değerine ayarlanırsa ancak API proxy isteğinde herhangi bir yük iletilmez. Örneğin:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml"
    

    Değişkenleri Ayıklama politikası, XML ayıklama işlemini yalnızca Content-Type üstbilgisi application/xml, text/xml veya application/*+xml. Content-Type üstbilgisini application/xml, text/xml veya Değişkenleri Ayıklama politikasının XML'i ayrıştırmasını istiyorsanız application/*+xml gerekir.

Çözünürlük

Değişkenleri Ayıklama politikasına iletilen girişin geçerli olduğundan ve boş olmadığından emin olun.

Yukarıda gösterilen örnek Değişkenleri Ayıklama politikasıyla ilgili sorunu düzeltmek için geçerli XML yükü Örneğin:

  1. Aşağıdaki içeriğe sahip city.xml adlı bir dosya oluşturun:

    <city>Bengaluru</city>
    <area>Sanjaynagar</area>
    
  2. Aşağıdaki gibi bir cURL komutu kullanarak API çağrısı yapın:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/xml" -X POST -d @city.xml
    
    

Neden: Geçersiz veya Bozuk Giriş

Değişkenleri Ayıklama politikası, geçersiz veya hatalı girişi ayrıştırıyorsa bu hatayı alırsınız.

Örneğin, Değişkenleri Ayıklama politikası için giriş olarak aşağıdaki geçersiz JSON sağlandıysa bu hatayı alırsınız.

[
    "args": ["name" : "amar" ]
]

Teşhis

  1. Hatanın oluştuğu Değişkenleri Ayıklama politikasını belirleyin. Daha fazla hata yanıtının faultstring öğesinde bu bilgileri görebilirsiniz. Örneğin, faultstring politikasında politika adı ExtractJSONVariables şeklindedir:

    "faultstring": "Failed to execute the ExtractVariables: ExtractJSONVariables"

  2. Başarısız olan Değişkenleri Çıkar XML'sinde <Source> öğesini inceleyin ve değişkenlerin ayıklandığı giriş türünü belirleyin. Örneğin, aşağıdaki Değişkenleri Ayıklama politikasında <Source> öğesi request olarak ayarlanmıştır ve JSON yükündeki değişkenleri ayıklamaktadır:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
    </ExtractVariables>
    
    
  3. Değişkenleri Ayıklama politikası tarafından ayrıştırılan girişin geçerli olup olmadığını kontrol edin. Giriş geçersiz veya hatalı biçimlendirilmişse hatanın nedeni budur.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasındaki örnekte, Değişkenleri Ayıklama politikasına aşağıdaki geçersiz JSON iletildi

    [
        "args": ["name" : "amar" ]
    ]
    

    İsteğin nasıl iletildiğini gösteren örnek API çağrısını aşağıda bulabilirsiniz:

    curl -v "http://<org>-<env>.apigee.net/v1/testevexecutionfailed" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "amar" ]]'
    

    API'ye iletilen JSON yükü, köşeli parantezler ([ ]) içeren bir dizi içerdiği için geçersizdir. Bu nedenle hata kodunu alırsınız:

    steps.extractvariables.ExecutionFailed
    

    Bu hata, <Source> öğesi response değerine ayarlanmasına rağmen JSON yanıt yükü geçersiz veya hatalı biçimlendirilmiş olduğunda da ortaya çıkabilir.

Çözünürlük

Değişkenleri Ayıklama politikasına iletilen girişin geçerli olduğundan ve hatalı biçimlendirilmiş olmadığından emin olun.

Yukarıda açıklanan örnek Değişkenleri Ayıklama politikasıyla ilgili sorunu düzeltmek için aşağıdaki gibi geçerli bir JSON yük isteği iletin:

{
   "args":{
      "name":"amar"
   }
}

UnableToCast

Hata kodu

steps.extractvariables.UnableToCast

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Unable to cast value [value] as [type].",
        "detail": {
            "errorcode": "steps.extractvariables.UnableToCast"
        }
    }
}

Neden

Bu hata, Değişkenleri Ayıklama politikası, çıkarılan bir değişkene dönüştürün. Bu genellikle bir veri türünü başka bir veri türünün değişkenine dönüştürebilirsiniz.

Örneğin, Değişkeni Ayıklama politikası, Dize değişkeninden Tamsayı değişkenine alınmışsa bu hatayı görürsünüz.

Teşhis

  1. Değişkenleri Ayıkla politikasının yayınlamaya çalıştığı ve başarısız olduğu değişkenin veri türünü tanımlayın. Bu bilgileri faultstring içinde bulabilirsiniz öğesi seçin. Örneğin, aşağıdaki faultstring içinde nesne türü BOOLEAN ise:

    "faultstring":"Unable to cast value 36.231 as BOOLEAN."

  2. Değeri 1. adımda belirlenen türde bir değişkene ayarlamaya çalıştığınız Değişkenleri Ayıklama politikasını belirleyin.

    Örneğin, aşağıdaki Değişkenleri Ayıkla politikası, değeri bir JSONPath $.latitude'ten boolean türündeki bir değişkene ayıklayarak hata dizesindeki değerle eşleştirir:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
          <Variable name="latitude" type="boolean">
              <JSONPath>$.latitude</JSONPath>
          </Variable>
        </JSONPayload>
        <Source clearPayload="false">response</Source>
    </ExtractVariables>
    
    
  3. Ayıklanan değerin veri türünü inceleyin. Veriler şurada olabilir: Başlıklar, URI yolları, JSON/XML yükleri, form parametreleri ve sorgu parametrelerinin biçimi.

  4. 3. adımda belirlenen veri türünün, verilerin atandığı değişkenin veri türüyle (2. adımda belirlenir) aynı olup olmadığını doğrulayın.

  5. Kaynak ve hedef değişkenlerin veri türü aynı değilse hatanın nedeni budur.

    Yukarıda gösterilen Değişkenleri Ayıklama politikasında JSON isteğini göz önünde bulundurun yük aşağıdaki gibidir:

    {
     "latitude":36.2312
    }
    

    <JSONPath>, ‘$.latitude’, boole veri türündeki bir değişkene atanan bir Tamsayıdır.

    Ayıklanan değerin veri türü ile değerin atandığı değişkenin veri türü aynı olmadığından steps.extractvariables.UnableToCast hata kodunu alırsınız.

Çözünürlük

Ayıklanan değerin veri türünün ve içeriğin aynı türde olacak.

Örnek Değişkenleri Ayıklama politikasını düzeltmek için değerini Tamsayı olarak değiştirir:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="EV-XML-Name" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="latitude" type="integer">
            <JSONPath>$.latitude</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response</Source>
</ExtractVariables>

JsonPathParsingFailure

Hata kodu

steps.extractvariables.JsonPathParsingFailure

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "ExtractVariables [policy_name]: Json path parsing failed for flow variables [variable_name]",
        "detail": {
            "errorcode": "steps.extractvariables.JsonPathParsingFailure"
        }
    }
}

Neden

Bu hata, Extract Değişkenleri politika, JSON yolunu ayrıştıramıyor ve akış değişkeninden veri çıkaramıyor <Source> öğesinde belirtilmiş. Bu durum genellikle akış değişkeni <Source> öğesi için belirtilen değer geçerli akışta mevcut değil.

Örneğin, bu hata, Değişkenleri Ayıkla politikası yanıt akışında yürütülüyorsa ve bir JSON yolunun ayrıştırılması bekleniyorsa ancak <Source> öğesi, yanıt akışında bulunmayan request.content akış değişkenini belirtiyorsa ortaya çıkar.

Teşhis

  1. Hatanın oluştuğu Değişkenleri Ayıklama politikasını ve verilerin ayıklanamadığı akış değişkeninin adını tanımlayın. Bu öğelerin ikisini de hata yanıtının hata dizesi öğesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde politika adı ExtractVariables-1, değişken ise request.content şeklindedir:

    "faultstring": "ExtractVariables ExtractJSONVariabes: Json path parsing failed for flow variables request.content"

  2. Başarısız Değişkenleri Ayıklama politikası XML'inde <Source> öğesindeki değişken kümesi, hata dizesi (yukarıdaki 1. adım). Örneğin, aşağıdaki Çıkarım Değişkenleri politika, hata dizesindekiyle eşleşen request.content adlı bir değişkeni belirtir:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
        <JSONPayload>
            <Variable name="Name" type="string">
                <JSONPath>$.args.name</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request.content</Source>
    </ExtractVariables>
    
    
  3. <Source> öğesinde kullanılan akış değişkeninin, Değişkenleri Ayıklama politikasının yürütüldüğü akışta tanımlanıp kullanılabilir olmadığını doğrulayın.

  4. Değişken şunlardan biriyse:

    • Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
    • çözülemiyor (tanımlanmamış)

    hatanın nedeni budur.

    Örneğin, yukarıda gösterilen ExtractVariables politikasının yanıt akışında yürütülmesi gerektiğini varsayalım. request.content akış değişkeninin, Değişkenleri Ayıklama politikasının <Source> öğesinde kullanıldığını unutmayın. request.content akış değişkeni yalnızca istek akışında kullanılabilir.

    response değişkeni istek akışında bulunmadığından şu hata kodunu alırsınız: steps.extractvariables.JsonPathParsingFailure.

Çözünürlük

Extract'ın <Source> öğesinde kullanılan akış değişkeninin Değişkenler politikası, Değişkenleri Ayıklama politikasının bulunduğu akışta kullanılabilir yürütülür.

Örneğin, yanıtta response.content adlı bir değişkenin bulunduğunu varsayalım aslında ayıklamak istediğiniz JSON dosyasını içeriyorsa. Ayıklamayı düzeltmek için Değişkenler Politikası'nı seçerseniz <Source> öğesini şu şekilde değiştirebilirsiniz:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables name="ExtractJSONVariables" async="false" continueOnError="false" enabled="true">
    <JSONPayload>
        <Variable name="Name" type="string">
            <JSONPath>$.args.name</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">response.content</Source>
</ExtractVariables>