Fehlerbehebung bei der Bereitstellung von HTTPModifier-Richtlinien

Sie lesen die Dokumentation zu Apigee X.
Apigee Edge-Dokumentation aufrufen

InvalidIndex

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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]

Beispiel für Fehlermeldung

Error in deployment for environment test.
The revision is deployed, but traffic cannot flow.
HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0

Ursache

Wenn der in den Elementen <Copy> und/oder <Remove> der HTTPModifier-Richtlinie angegebene Wert 0 oder eine negative Zahl ist, schlägt die Bereitstellung des API-Proxys fehl.

Wenn Sie beispielsweise mehrere Abfrageparameter mit demselben Namen übergeben, können Sie auf diese als indexierte Ablaufvariablen zugreifen. Wenn Sie die IDs von drei Studenten als Abfrageparameter übergeben möchten, gehen Sie so vor:

https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3

Nehmen wir außerdem an, Sie möchten auf die folgenden Abfrageparameter mit den Indexnummern 0, 1 und 2 in der HTTPModifier-Richtlinie zugreifen:

id.0
id.1 and
id.2

In diesem Fall schlägt die Bereitstellung des Proxys fehl, da der Index mit 1 beginnen muss. Sie können also auf den ersten Abfrageparameter "id=1" als "id.1" zugreifen. Für den Zugriff auf den zweiten Abfrageparameter "id=2" müssen Sie Index 2, also "id.2", verwenden. In ähnlicher Weise können Sie "id.3" verwenden, um auf den dritten Abfrageparameter "id=3" zuzugreifen.

Weitere Informationen finden Sie in der Dokumentation AssignMessage-Richtlinie Copy Element.

Diagnose

  1. Geben Sie die HTTPModifier-Richtlinie, in der der Fehler aufgetreten ist, den Namen des Attributs und den ungültigen Index an. Sie finden alle diese Elemente in der Fehlermeldung. Beispiel: Im folgenden Fehler lautet der Richtlinienname GeneratingGeocodingRequest, der Name des Attributs id und der Index 0:

    HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
    
  2. Überprüfen Sie, ob der Attributname und der Index in der fehlgeschlagenen HTTPModifier-Richtlinie mit dem Attributnamen und dem in der Fehlermeldung angegebenen Index übereinstimmen (Schritt 1 oben). Die folgende Richtlinie gibt beispielsweise das Attribut id und den Index als 0 an, was dem Inhalt der Fehlermeldung entspricht:

    <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>
    
  3. Wenn der angegebene Wert 0 oder eine negative Zahl ist, ist dies die Ursache des Fehlers.

    In dem oben gezeigten Beispiel Assign Message-Richtlinie versucht man, mit dem Index 0 auf den ersten Wert des Abfrageparameters "id" zuzugreifen. Daher schlägt die Bereitstellung des API-Proxys mit folgendem Fehler fehl:

    AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
    

Lösung

Wenn Sie unter „HTTPModifier“ auf mehrere Header, Abfrageparameter oder andere Parameter mit dem gleichen Namen zugreifen, achten Sie darauf, dass der Index immer größer als null ist. Beispiel:

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