Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
InvalidIndex
Hata mesajı
API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını gösterir:
Error in deployment for environment [environment] The revision is deployed, but traffic cannot flow. AssignMessage[policy_name]: index must be greater than zero in [attribute].[index]
Örnek hata mesajı
Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Örnek ekran görüntüsü
Neden
Mesaj Ata politikasının <Copy>
ve/veya <Remove>
öğelerinde belirtilen dizin 0 veya negatif bir sayıysa API Proxy'sinin dağıtımı başarısız olur.
Örneğin, aynı adla birden fazla sorgu parametresi iletirseniz Edge'de bunlara dizine eklenmiş akış değişkenleri olarak erişebilirsiniz. 3 öğrencinin kimliklerini sorgu parametresi olarak iletmek istediğinizi varsayalım. Bunu aşağıdaki gibi yapabilirsiniz:
https://myorg-test.apigee.net/v1/basepath?school_name=NPS&id=1&id=2&id=3
Ardından, aşağıdaki şekilde İleti Ata politikasında dizin numaraları 0, 1 ve 2 olan bu sorgu parametrelerine erişmeye çalıştığınızı varsayalım:
id.0
id.1 and
id.2
Bu durumda, dizinin 1 ile başlaması gerektiğinden proxy dağıtımı başarısız olur. Bu, ilk sorgu parametresi "id=1"e erişebileceğiniz anlamına gelir. "id.1" olarak değiştirilmelidir. İkinci sorgu parametresi "id=2"ye erişmek için dizin 2'yi (yani "id.2") kullanmanız gerekir. Benzer şekilde, üçüncü sorgu parametresi "id=3"e erişmek için "id.3" kullanabilirsiniz.
Buradan daha fazla bilgi edinebilirsiniz.
Teşhis
Hatanın oluştuğu Mesaj Ata ilkesini, özelliğin adını ve geçersiz dizini tanımlayın. Bu öğelerin tümünü hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı
GeneratingGeocodingRequest
, özelliğin adıid
ve dizin0
şeklindedir:AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Başarısız İleti Atama Politikası XML'sinde kullanılan özellik adının ve dizinin, hata mesajında tanımlanan özellik adı ve dizinle eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politika
id
özelliğini ve dizini0
olarak belirtir. Bu durum, hata mesajındaki değerle eşleşir:<AssignMessage name="GenerateStudentsRequest"> <AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo> <Copy source="request"> <QueryParams> <QueryParam name="school_name"/> <QueryParam name="id.0"/> <QueryParam name="id.1"/> <QueryParam name="id.2"/> </QueryParams> </Copy> </AssignMessage>
Belirtilen dizin 0 veya negatif bir sayıysa hatanın nedeni budur.
Yukarıda gösterilen İleti Politikası Ata örneğinde, "id" sorgu parametresinin ilk değerine erişmeye çalışıyorsunuz. 0'ı kullanır. Bu nedenle API Proxy'sinin dağıtımı şu hatayı vererek başarısız olur:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Çözünürlük
İleti Ata bölümünde birden çok üstbilgi, sorgu parametresi veya aynı adı paylaşan başka parametrelere eriştiğinizde dizinin her zaman sıfırdan büyük olduğundan emin olun. Örneğin:
<AssignMessage name="GenerateStudentsRequest">
<AssignTo createNew="true" type="request">StudentsInfoRequest</AssignTo>
<Copy source="request">
<QueryParams>
<QueryParam name="school_name"/>
<QueryParam name="id.1"/>
<QueryParam name="id.2"/>
<QueryParam name="id.3"/>
</QueryParams>
</Copy>
</AssignMessage>
InvalidVariableName
Hata mesajı
API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını gösterir:
Error Saving Revision [revision_number] The revision is deployed, but traffic cannot flow. AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Örnek hata mesajı
Error Saving Revision 3
AssignMessage schema validation failed: invalid variable name - null - in assign variable.
Örnek ekran görüntüsü
Neden
<Name>
alt öğesi boşsa veya <AssignVariable>
öğesinde belirtilmemişse değer atanacak geçerli bir değişken adı olmadığından API proxy'sinin dağıtımı başarısız olur. Geçerli bir değişken adı gerekiyor.
Teşhis
Hatanın oluştuğu ilgili API Proxy'sinde tüm Mesaj Atama politikalarını inceleyin. <Name>
alt öğesinin boş olduğu veya <AssignVariable>
öğesinde belirtilmemiş bir İleti Ata politikası varsa hatanın nedeni budur.
1. Örnek: Aşağıdaki Mesaj Atama politikasında tanımlı <Name>
öğesi yok.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
2. Örnek: Aşağıdaki İleti Ata politikasında boş bir <Name>
öğesi var.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>Assign Message-1</DisplayName>
<Properties/>
<AssignVariable>
<Name></Name>
<Value>abcd1234</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
Çözünürlük
<Name>
alt öğesinin, Mesaj Ata politikasının <AssignVariable>
öğesi içinde her zaman belirtildiğinden ve boş olmadığından emin olun. Örneğin:
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <AssignVariable> <Name>appSecret</Name> <Value>abcd1234</Value> </AssignVariable> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>