Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
InvalidMessageWeight
Hata kodu
policies.ratelimit.InvalidMessageWeight
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Invalid message weight value [invalid_value]",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Örnek Hata Mesajı
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
Neden
Bu hata, bir akış değişkeni aracılığıyla belirtilen <MessageWeight>
öğesinin değeri geçersizse (tam sayı olmayan bir değer) oluşur.
Örneğin, <MessageWeight>
öğesi için belirtilen akış değişkeninin değeri 1,5 (tam sayı olmayan bir değer) olduğunda bu hata ortaya çıkar.
Teşhis
Kota politikasında
<MessageWeight>
öğesi için kullanılan geçersiz değeri tanımlayın. Bu bilgileri, hata yanıtınınfaultstring
öğesinde bulabilirsiniz. Örneğin, aşağıdaki hatada<MessageWeight>
öğesi için kullanılan geçersiz değer1.5
'tır:"faultstring": "Invalid message weight value 1.5"
Hatanın oluştuğu ilgili API Proxy'sinde tüm Kota politikalarını inceleyin.
<MessageWeight>
öğesinin belirtildiği bir veya daha fazla Kota politikası olabilir.Örneğin, aşağıdaki politika
<MessageWeight>
bir akış değişkeni aracılığıylamessage_weight
değişikliği belirtir:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Quota async="false" continueOnError="false" enabled="true" name="Quota_with_weight" type="calendar"> <DisplayName>Quota_with_weight</DisplayName> <Properties/> <Allow count="3"/> <Interval>1</Interval> <TimeUnit>minute</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> <MessageWeight ref="message_weight"/> </Quota>
Tanımlanmış Kota Politikalarında
<MessageWeight>
için kullanılan değişkenin değerini belirleyin. Akış değişkeninin değeri, HTTP üstbilgilerinden, sorgu parametrelerinden, XML veya JSON istek yükü verisinden çıkarılabilir ya da başka bir politikada tanımlanabilir:- Değişkenin ilk olarak tanımlandığı API Proxy paketi içinde kodu bulun.
- Değişkenin tanımlandığı ve doldurulduğu politikayı belirledikten sonra, değişken değerinin nasıl ayarlandığını kontrol edin.
- Akış değişkeninin değeri yukarıdaki 1. adımda tanımlanan değerle eşleşiyorsa hatanın nedeni budur.
Örneğin, Kota Politikası'ndan önce kullanılan bir JavaScript politikasının,
message_weight
değişkenini aşağıda gösterilen istek türüne göre ayarladığını varsayalım:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
message_weight
değişkeni değerinin1.5
olduğuna ve bu değerin geçersiz (tam sayı olmayan) bir değer olduğuna dikkat edin.
Çözünürlük
Akış değişkeni tarafından belirtilen MessageWeight
değerini temsil eden değerin geçerli bir değer (tam sayı değeri) olduğundan emin olun.
Yukarıda gösterilen örneği düzeltmek için JavaScript'te message_weight
değişkeninin değerini tam sayı olacak şekilde değiştirebilirsiniz.
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveQuotaIntervalReference
Hata kodu
policies.ratelimit.FailedToResolveQuotaIntervalReference
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Örnek Hata Mesajı
{
"fault": {
"faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
Neden
Bu hata, <Interval>
öğesi Kota politikasında tanımlanmamışsa ortaya çıkar. Bu öğe zorunludur ve kotaya uygulanabilir zaman aralığını belirtmek için kullanılır. Zaman aralığı, <TimeUnit>
öğesiyle tanımlandığı şekilde dakika, saat, gün, hafta veya ay olabilir.
Teşhis
Hatanın oluştuğu API Proxy'sinde Kota politikalarının her birini inceleyin. Zorunlu öğe
<Interval>
'ün tanımlanmadığı bir kota politikası varsa hatanın nedeni budur.Örneğin, aşağıdaki Kota politikası zorunlu
<Interval>
öğesini içermez:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>
Zorunlu öğe
<TimeUnit>
yukarıdaki kota politikasında tanımlanmadığından şu hata kodunu alırsınız:policies.ratelimit.FailedToResolveQuotaIntervalReference
Çözünürlük
Belirli bir API proxy'si için tüm Kota politikalarında zorunlu <Interval>
öğesinin doğru şekilde tanımlandığından emin olun.
Yukarıda gösterilen örneği düzeltmek için politikayı, aşağıda gösterildiği gibi <Interval>
öğesini içerecek şekilde değiştirebilirsiniz.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>
FailedToResolveQuotaIntervalTimeUnitReference
Hata kodu
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Hata yanıtı gövdesi
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Örnek Hata Mesajı
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
Neden
Bu hata, <TimeUnit>
öğesi Kota politikasında tanımlanmamışsa ortaya çıkar. Bu öğe zorunludur ve kotaya uygulanabilir zaman birimini belirtmek için kullanılır. Zaman aralığı dakika, saat, gün, hafta veya ay biçiminde olabilir.
Teşhis
Hatanın oluştuğu API Proxy'sinde Kota politikalarının her birini inceleyin. Zorunlu
<TimeUnit>
öğesinin tanımlanmadığı bir Kota politikası varsa hatanın nedeni budur.Örneğin, aşağıdaki Kota politikası zorunlu
<TimeUnit>
öğesini içermez:<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>
Zorunlu
<TimeUnit>
öğesi yukarıdaki Kota politikasında tanımlanmadığından şu hata kodunu alırsınız:policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
Çözünürlük
Belirli bir API proxy'si için tüm Kota politikalarında zorunlu <TimeUnit>
öğesinin tanımlandığından emin olun.
Yukarıda gösterilen örneği düzeltmek için politikayı, aşağıda gösterildiği gibi <TimeUnit>
öğesini içerecek şekilde değiştirebilirsiniz.
<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar"> <DisplayName>CheckQuota</DisplayName> <Properties/> <Allow count="3"/> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <StartTime>2017-7-16 12:00:00</StartTime> </Quota>