คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info
InvalidMessageWeight
รหัสข้อผิดพลาด
policies.ratelimit.InvalidMessageWeight
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Invalid message weight value [invalid_value]",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Invalid message weight value 1.5",
"detail": {
"errorcode": "policies.ratelimit.InvalidMessageWeight"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากค่าขององค์ประกอบ <MessageWeight>
ที่ระบุผ่านตัวแปรการไหลไม่ถูกต้อง (ไม่ใช่ค่าจำนวนเต็ม)
ตัวอย่างเช่น ข้อผิดพลาดนี้จะเกิดขึ้นเมื่อค่าของตัวแปรโฟลว์ที่ระบุไว้สำหรับองค์ประกอบ <MessageWeight>
คือ 1.5 (ค่าที่ไม่ใช่จำนวนเต็ม)
การวินิจฉัย
ระบุค่าที่ไม่ถูกต้องที่ใช้กับองค์ประกอบ
<MessageWeight>
ในนโยบายโควต้า คุณดูข้อมูลนี้ได้ในองค์ประกอบfaultstring
ของการตอบกลับข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ค่าที่ไม่ถูกต้องที่ใช้สำหรับองค์ประกอบ<MessageWeight>
คือ1.5
"faultstring": "Invalid message weight value 1.5"
ตรวจสอบนโยบายโควต้าทั้งหมดในพร็อกซี API ที่เฉพาะเจาะจงซึ่งเกิดข้อผิดพลาด อาจมีนโยบายโควต้าอย่างน้อย 1 รายการที่ระบุองค์ประกอบ
<MessageWeight>
ตัวอย่างเช่น นโยบายต่อไปนี้ระบุ
<MessageWeight>
ผ่านตัวแปรการไหลmessage_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>
กำหนดค่าของตัวแปรที่ใช้สำหรับ
<MessageWeight>
ในนโยบายโควต้าที่ระบุ ระบบจะดึงค่าของตัวแปรการไหลได้จากส่วนหัว HTTP, พารามิเตอร์การค้นหา, เพย์โหลดคําขอ XML หรือ JSON หรือกําหนดไว้ในนโยบายอื่น- ค้นหาโค้ดภายในพูล API Proxy ที่กําหนดตัวแปรไว้ก่อน
- เมื่อทราบนโยบายที่กําหนดตัวแปรและป้อนข้อมูลไว้แล้ว ให้ตรวจสอบวิธีตั้งค่าค่าสําหรับตัวแปร
- หากค่าของตัวแปรการไหลตรงกับค่าที่ระบุไว้ในขั้นตอนที่ 1 ด้านบน แสดงว่านี่คือสาเหตุของข้อผิดพลาด
ตัวอย่างเช่น สมมติว่านโยบาย JavaScript ที่ใช้ก่อนนโยบายโควต้าตั้งค่าตัวแปร
message_weight
ตามประเภทคำขอดังที่แสดงด้านล่างvar verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
โปรดทราบว่าค่าของตัวแปร
message_weight
คือ1.5
ซึ่งเป็นค่าที่ไม่ถูกต้อง (ไม่ใช่จำนวนเต็ม)
ความละเอียด
ตรวจสอบว่าค่าที่แทน MessageWeight
ที่ตัวแปรโฟลว์ระบุเป็นค่าที่ถูกต้อง (ค่าจำนวนเต็ม)
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไขค่าของตัวแปร message_weight
ใน JavaScript ให้เป็นจำนวนเต็มได้
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveQuotaIntervalReference
รหัสข้อผิดพลาด
policies.ratelimit.FailedToResolveQuotaIntervalReference
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to resolve quota interval reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to resolve quota interval reference api.product.developer.quota.interval in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalReference"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากไม่ได้กําหนดองค์ประกอบ <Interval>
ภายในนโยบายโควต้า องค์ประกอบนี้ต้องระบุและใช้เพื่อระบุช่วงเวลาที่มีผลกับโควต้า ช่วงเวลาอาจเป็นนาที ชั่วโมง วัน สัปดาห์ หรือเดือนตามที่กำหนดโดยองค์ประกอบ <TimeUnit>
การวินิจฉัย
ตรวจสอบนโยบายโควต้าแต่ละรายการใน API Proxy ที่เกิดความล้มเหลว หากมีนโยบายโควต้าที่ไม่ได้กำหนดองค์ประกอบ
<Interval>
ที่เป็นองค์ประกอบบังคับ ปัญหานี้อาจเกิดจากนโยบายดังกล่าวตัวอย่างเช่น นโยบายโควต้าต่อไปนี้ไม่มีองค์ประกอบ
<Interval>
ที่ต้องระบุ<?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>
เนื่องจากไม่มีการกำหนดองค์ประกอบที่ต้องระบุ
<TimeUnit>
ในนโยบายโควต้าข้างต้น คุณจึงจะได้รับรหัสข้อผิดพลาดต่อไปนี้policies.ratelimit.FailedToResolveQuotaIntervalReference
ความละเอียด
ตรวจสอบว่านโยบายโควต้าทั้งหมดสำหรับพร็อกซี API หนึ่งๆ กำหนดองค์ประกอบ <Interval>
ที่จำเป็นอย่างถูกต้อง
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไขนโยบายให้รวมองค์ประกอบ <Interval>
ดังที่แสดงด้านล่าง
<?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
รหัสข้อผิดพลาด
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
เนื้อหาการตอบกลับข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference [reference] in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
ตัวอย่างข้อความแสดงข้อผิดพลาด
{
"fault": {
"faultstring": "Failed to resolve quota time unit reference apiproduct.developer.quota.timeunity in quota policy {1}",
"detail": {
"errorcode": "policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากไม่ได้กําหนดองค์ประกอบ <TimeUnit>
ภายในนโยบายโควต้า องค์ประกอบนี้เป็นองค์ประกอบที่จำเป็นและใช้เพื่อระบุหน่วยเวลาที่ใช้กับโควต้า ช่วงเวลาอาจเป็นนาที ชั่วโมง วัน สัปดาห์ หรือเดือน
การวินิจฉัย
ตรวจสอบนโยบายโควต้าแต่ละรายการใน API Proxy ที่เกิดความล้มเหลว หากมีนโยบายโควต้าที่ไม่ได้กำหนดองค์ประกอบ
<TimeUnit>
ที่เป็นองค์ประกอบบังคับ ปัญหานี้อาจเกิดจากนโยบายดังกล่าวตัวอย่างเช่น นโยบายโควต้าต่อไปนี้ไม่มีองค์ประกอบ
<TimeUnit>
ที่ต้องระบุ<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>
เนื่องจากไม่ได้กำหนดองค์ประกอบที่จำเป็น
<TimeUnit>
ในนโยบายโควต้าข้างต้น คุณจะได้รับรหัสข้อผิดพลาด:policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference
ความละเอียด
ตรวจสอบว่านโยบายโควต้าทั้งหมดสำหรับพร็อกซี API หนึ่งๆ มีการกําหนดองค์ประกอบ <TimeUnit>
ที่จําเป็น
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไขนโยบายให้รวมองค์ประกอบ <TimeUnit>
ดังที่แสดงด้านล่าง
<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>