Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
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 (tamsayı 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) ise bu hata oluşur.
Teşhis
Kota politikasında
<MessageWeight>öğesi için kullanılan geçersiz değeri belirleyin. 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'dir:"faultstring": "Invalid message weight value 1.5"Hatayı içeren API Proxy'sindeki tüm kota politikalarını inceleyin.
<MessageWeight>öğesinin belirtildiği bir veya daha fazla kota politikası olabilir.Örneğin, aşağıdaki politika
<MessageWeight>değerini bir akış değişkeni aracılığıyla belirtirmessage_weight:<?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>Belirlenen kota politikalarında
<MessageWeight>için kullanılan değişkenin değerini belirleyin. Akış değişkeninin değeri HTTP üstbilgilerinden, sorgu parametrelerinden, bir XML veya JSON isteği yükünden çıkarılabilir ya da başka bir politikada tanımlanabilir:- API proxy paketinde değişkenin ilk tanımlandığı kodu bulun.
- Değişkenin ilk olarak tanımlandığı ve doldurulduğu politikayı belirledikten sonra değişkenin değerinin nasıl ayarlandığını kontrol edin.
- Akış değişkeninin değeri yukarıdaki 1. adımda belirtilen değerle eşleşiyorsa hatanın nedeni budur.
Örneğin, kota politikasından önce kullanılan bir JavaScript politikasının, değişkeni
message_weightistek türüne göre aşağıdaki gibi 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_weightdeğişkeninin değerinin1.5olduğunu ve bu değerin geçersiz (tam sayı olmayan) olduğunu unutmayın.
Çözünürlük
Akış değişkeni tarafından belirtilen MessageWeight değerinin geçerli bir değer (tam sayı değeri) olduğundan emin olun.
Yukarıda gösterilen örneği düzeltmek için JavaScript'teki message_weight değişkeninin değerini bir tam sayı olarak 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 oluşur. Bu öğe zorunludur ve kotanın geçerli olduğu 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
Hatayı içeren API proxy'sindeki her bir kota politikasını inceleyin. Zorunlu öğe
<Interval>'nın tanımlanmadığı bir kota politikası varsa hatanın nedeni budur.Örneğin, aşağıdaki kota politikasında zorunlu öğe
<Interval>yoktur:<?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ığı için ş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ının zorunlu öğesi <Interval>'nın düzgün şekilde tanımlandığından emin olun.
Yukarıda gösterilen örneği düzeltmek için politikayı aşağıdaki gibi değiştirerek <Interval> öğesini ekleyebilirsiniz.
<?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 oluşur. Bu öğe zorunludur ve kotanın geçerli olduğu zaman birimini belirtmek için kullanılır. Zaman aralığı dakika, saat, gün, hafta veya ay cinsinden olabilir.
Teşhis
Hataya neden olan API proxy'sindeki her bir kota politikasını inceleyin. Zorunlu öğe
<TimeUnit>'nın tanımlanmadığı bir kota politikası varsa hatanın nedeni budur.Örneğin, aşağıdaki kota politikasında zorunlu öğe
<TimeUnit>yoktur:<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 öğe
<TimeUnit>yukarıdaki kota politikasında tanımlanmadığı için ş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 öğe <TimeUnit> tanımlandığından emin olun.
Yukarıda gösterilen örneği düzeltmek için politikayı aşağıdaki gibi değiştirerek <TimeUnit> öğesini ekleyebilirsiniz.
<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>