คุณกำลังดูเอกสารประกอบสำหรับ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info
InvalidMessageWeight
รหัสข้อผิดพลาด
policies.ratelimit.InvalidMessageWeight
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": {jdoe "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"
ตรวจสอบนโยบาย Spike Arrest ทั้งหมดในพร็อกซี API ที่เกิดข้อผิดพลาด อาจมีนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันอย่างน้อย 1 นโยบายที่ระบุองค์ประกอบ
<MessageWeight>
ตัวอย่างเช่น นโยบายต่อไปนี้ระบุค่าของ
<MessageWeight>
ผ่านตัวแปรการไหลที่เรียกว่าmessage_weight:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate>100ps</Rate> <MessageWeight ref="message_weight"/> </SpikeArrest>
กำหนดค่าของตัวแปรที่ใช้ในองค์ประกอบ
<MessageWeight>
ของนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันที่ระบุ ค่าของตัวแปรการไหลสามารถดึงมาจากส่วนหัว HTTP, พารามิเตอร์การค้นหา, เพย์โหลดคําขอ XML หรือ JSON หรือกําหนดไว้ในนโยบายอื่น- ค้นหาโค้ดภายในพร็อกซี API ที่กําหนดตัวแปรไว้ก่อน
- เมื่อคุณทราบนโยบายที่กําหนดตัวแปรและป้อนข้อมูลตัวแปรแล้ว ให้ตรวจสอบวิธีตั้งค่าตัวแปร
- หากค่าของตัวแปรการไหลตรงกับค่าที่ระบุไว้ในขั้นตอนที่ 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");
}
FailedToResolveSpikeArrestRate
รหัสข้อผิดพลาด
policies.ratelimit.FailedToResolveSpikeArrestRate
เนื้อหาการตอบกลับข้อผิดพลาด
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference [reference] in SpikeArrest policy [api_policy]", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
ตัวอย่างข้อความแสดงข้อผิดพลาด
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากการอ้างอิงตัวแปรที่มีการตั้งค่าอัตราภายในองค์ประกอบ <Rate>
ไม่สามารถแก้ไขเป็นค่าภายในนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลัน องค์ประกอบนี้จำเป็นและใช้เพื่อระบุอัตราการจับกุมที่เพิ่มขึ้นอย่างฉับพลันในรูปแบบ {int}pm
หรือ {int}ps
ตัวอย่างเช่น {int}pm
อาจเท่ากับ 500pm
ซึ่งหมายความว่ามีการโทร 500 ครั้งต่อนาที เช่นเดียวกัน ค่า 10ps
หมายถึงการโทร 10 ครั้งต่อวินาที
การวินิจฉัย
ระบุนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันที่เกิดข้อผิดพลาดและชื่อข้อมูลอ้างอิงที่แก้ไขไม่ได้อย่างถูกต้อง คุณจะเห็นทั้ง 2 รายการนี้ในองค์ประกอบ faultstring ของคำตอบข้อผิดพลาด
ตัวอย่างเช่น ในสตริงข้อผิดพลาดต่อไปนี้ ชื่อนโยบายคือ
SpikeArrest_AuthProxy
และข้อมูลอ้างอิงคือrequest.header.rate
"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy"
ใน XML นโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันที่ไม่สําเร็จ ให้ยืนยันว่าชื่อข้อมูลอ้างอิงที่ใช้ตรงกับชื่อข้อมูลอ้างอิงที่ระบุไว้ในสตริงข้อบกพร่อง (ขั้นตอนที่ 1 ด้านบน) ** **
ตัวอย่างเช่น นโยบายต่อไปนี้ตั้งค่าเอลิเมนต์
ที่มีชื่อการอ้างอิง request.header.rate
ซึ่งตรงกับข้อมูลใน faultstring:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate ref="request.header.rate"/> </SpikeArrest>
ตรวจสอบว่ามีการกําหนดตัวแปรและพร้อมใช้งานในขั้นตอนที่นโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันทำงานอยู่หรือไม่
หากตัวแปรมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ไม่พร้อมใช้งานในขั้นตอนที่นโยบายจะทำงาน) หรือ
- ไม่สามารถแก้ไขได้ (ไม่ได้กําหนด)
นั่นคือสาเหตุของข้อผิดพลาด
ในตัวอย่างที่แสดงด้านบน ค่าของอัตราการหยุดการเพิ่มขึ้นอย่างฉับพลันในองค์ประกอบ
<Rate>
ควรดึงมาจากส่วนหัวคำขอชื่อ rate แต่ Edge แปลค่า request.header.rate ไม่ได้ กรณีนี้จะเกิดขึ้นหากไม่ได้ส่งส่วนหัว rate เป็นส่วนหนึ่งของคําขอ APIตัวอย่างคำขอ API ที่ไม่ส่งส่วนหัว rate เป็นส่วนหนึ่งของคำขอมีดังนี้
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json"
เนื่องจากไม่มีการส่งส่วนหัว rate เป็นส่วนหนึ่งของคําขอ ข้อมูลอ้างอิง request.header.rate ที่ใช้กับองค์ประกอบ
<Rate>
ใน Spike ข้างต้นจึงไม่มีการกำหนดนโยบายการจับกุม จึงแก้ไขไม่ได้ คุณจึงจะได้รับรหัสข้อผิดพลาดดังนี้policies.ratelimit.FailedToResolveSpikeArrestRate
ความละเอียด
ตรวจสอบว่าตัวแปรที่อ้างอิงในองค์ประกอบ <Rate>
มีอยู่/ได้รับการกําหนด และพร้อมใช้งานในขั้นตอนที่ระบบจะเรียกใช้นโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลัน
หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน คุณสามารถแก้ไขคำขอให้รวมส่วนหัว rate ดังที่แสดงด้านล่าง
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json" -H "rate:30ps"