Anda sedang melihat dokumentasi Apigee X.
Lihat
Dokumentasi Apigee Edge.
InvalidIndex
Pesan error
Deployment proxy API melalui UI Apigee atau API gagal dengan pesan error ini:
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]
Contoh pesan error
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
Penyebab
Jika indeks yang ditentukan dalam elemen <Copy>
dan/atau <Remove>
kebijakan HTTPModifier adalah 0 atau angka negatif, deployment Proxy API akan gagal.
Misalnya, jika meneruskan beberapa parameter kueri dengan nama yang sama, Anda dapat mengaksesnya sebagai variabel alur terindeks. Katakanlah Anda ingin meneruskan ID 3 siswa sebagai parameter kueri, maka Anda dapat melakukannya seperti berikut:
https://$EXTERNAL_IP/$PROXY_BASEPATH?school_name=NPS&id=1&id=2&id=3
Kemudian, katakanlah Anda mencoba mengakses parameter kueri ini dengan nomor indeks 0, 1, dan 2 dalam kebijakan HTTPModifier sebagai berikut:
id.0
id.1 and
id.2
Dalam hal ini, deployment proxy gagal karena indeks harus dimulai dengan 1. Artinya, Anda dapat mengakses parameter kueri pertama "id=1" sebagai "id.1". Untuk mengakses parameter kueri kedua "id=2", Anda harus menggunakan indeks 2 yaitu "id.2". Demikian pula, untuk mengakses parameter kueri ketiga "id=3", Anda dapat menggunakan "id.3".
Untuk informasi selengkapnya, lihat Dokumentasi elemen Salin kebijakan MenetapkanMessage.
Diagnosis
Identifikasi kebijakan HTTPModifier tempat terjadinya error, nama atribut, dan indeks yang tidak valid. Anda dapat menemukan semua item ini dalam pesan error. Misalnya, dalam error berikut, nama kebijakan adalah
GeneratingGeocodingRequest
, nama atribut adalahid
, dan indeksnya adalah0
:HTTPModifier[GenerateStudentsRequest]: index must be greater than zero in id.0
Pastikan nama atribut dan indeks yang digunakan dalam XML kebijakan HTTPModifier yang gagal cocok dengan nama atribut dan indeks yang diidentifikasi dalam pesan error (langkah #1 di atas). Misalnya, kebijakan berikut menetapkan atribut
id
dan indeks sebagai0
, yang sesuai dengan isi pesan error:<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>
Jika indeks yang ditentukan adalah 0 atau angka negatif, maka itulah penyebab errornya.
Pada contoh kebijakan Tetapkan Pesan yang ditampilkan di atas, Anda mencoba mengakses nilai pertama parameter kueri "id" menggunakan indeks 0. Oleh karena itu, deployment Proxy API gagal dengan error:
AssignMessage[GenerateStudentsRequest]: index must be greater than zero in id.0
Resolusi
Di HTTPModifier, saat Anda mengakses beberapa header, parameter kueri, atau parameter lain yang memiliki nama yang sama, pastikan indeksnya selalu lebih besar dari nol. Contoh:
<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>