คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
นโยบายนี้ให้คุณเพิ่มโค้ด JavaScript ที่กำหนดเองซึ่งทำงานภายในบริบทของ API ได้ โฟลว์พร็อกซี ในโค้ด JavaScript ที่กำหนดเอง คุณสามารถใช้ออบเจ็กต์ เมธอด และคุณสมบัติของ โมเดลออบเจ็กต์ JavaScript ของ Apigee Edge โมเดลออบเจ็กต์ช่วยให้คุณรับ ตั้งค่า และนำออกได้ ในบริบทโฟลว์พร็อกซีได้ คุณ นอกจากนี้ยังใช้ฟังก์ชันวิทยาการเข้ารหัสพื้นฐานที่มีให้กับโมเดลออบเจ็กต์ได้ด้วย
เกี่ยวกับ
นโยบาย JavaScript มีกรณีการใช้งานมากมาย เช่น คุณสามารถรับและตั้งค่าขั้นตอน ดำเนินการตรรกะที่กำหนดเองและดำเนินการจัดการความผิดพลาด ดึงข้อมูลจากคำขอ หรือ การตอบกลับ แก้ไข URL เป้าหมายแบ็กเอนด์แบบไดนามิก และอีกมากมาย นโยบายนี้ช่วยให้คุณดำเนินการต่อไปนี้ได้ ใช้ลักษณะการทำงานที่กำหนดเองซึ่งไม่อยู่ภายใต้นโยบาย Edge มาตรฐานอื่นๆ จริงๆ แล้ว คุณ สามารถใช้นโยบาย JavaScript เพื่อบรรลุลักษณะการทำงานที่เหมือนกันหลายอย่างซึ่งนโยบายอื่นใช้ เช่น AssignMessage และ ExtractVariable
Use Case หนึ่งที่เราไม่แนะนําสําหรับนโยบาย JavaScript คือการบันทึก นโยบายการบันทึกข้อความมีประโยชน์มาก เหมาะกับการบันทึกเข้าสู่แพลตฟอร์มการบันทึกข้อมูลของบุคคลที่สาม เช่น Splunk, Sumo และ Loggly และ คุณสามารถปรับปรุงประสิทธิภาพของพร็อกซี API ด้วยการบังคับใช้นโยบายการบันทึกข้อความใน PostClientFlow ซึ่งทำงานหลังจากส่งการตอบกลับไปยังไคลเอ็นต์แล้ว
นโยบาย JavaScript ให้คุณระบุไฟล์ต้นฉบับ JavaScript ที่จะดำเนินการหรือ
คุณจะรวมโค้ด JavaScript ได้โดยตรงในการกำหนดค่าของนโยบายด้วย <Source>
ไม่ว่าจะใช้วิธีใด โค้ด JavaScript จะทำงานเมื่อขั้นตอนที่แนบนโยบายทำงาน
สำหรับตัวเลือกไฟล์ต้นฉบับ ซอร์สโค้ดจะเก็บอยู่ใน
ตำแหน่งมาตรฐานภายในแพ็กเกจพร็อกซี: apiproxy/resources/jsc
หรือคุณสามารถ
จัดเก็บซอร์สโค้ดในไฟล์ทรัพยากรที่ระดับสภาพแวดล้อมหรือองค์กร สำหรับ
โปรดดูวิธีการที่หัวข้อไฟล์ทรัพยากร คุณสามารถ
ให้อัปโหลด JavaScript ผ่านตัวแก้ไขพร็อกซี UI ของ Apigee
ไฟล์ต้นฉบับของ JavaScript ต้องมีส่วนขยาย .js
เสมอ
ดูซอฟต์แวร์และเวอร์ชันที่รองรับ สำหรับ JavaScript เวอร์ชันที่รองรับในปัจจุบัน
วิดีโอ
ดูวิดีโอสั้นๆ เพื่อดูวิธีสร้างส่วนขยายนโยบายที่กำหนดเองโดยใช้ JavaScript
ตัวอย่าง
เขียน URL เป้าหมายใหม่
นี่คือกรณีการใช้งานทั่วไป: การดึงข้อมูลจากเนื้อหาของคำขอ เพื่อจัดเก็บไว้ในโฟลว์ และใช้ตัวแปรโฟลว์นั้นในตำแหน่งอื่นของโฟลว์พร็อกซี สมมติว่าคุณมีแอป ซึ่งผู้ใช้ป้อนชื่อในแบบฟอร์ม HTML แล้วส่งไป คุณต้องการให้พร็อกซี API แยกข้อมูลแบบฟอร์มและเพิ่มลงใน URL ที่ใช้เรียกใช้บริการแบ็กเอนด์แบบไดนามิก อย่างไร คุณจะทำสิ่งนี้ในนโยบาย JavsScript ไหม
หมายเหตุ: หากคุณต้องการลองดูตัวอย่างนี้ เราจะถือว่าคุณได้สร้าง ในตัวแก้ไขพร็อกซี เมื่อคุณสร้าง URL เพียงให้ URL บริการแบ็กเอนด์ของ: http://www.example.com สำหรับตัวอย่างนี้ เราจะเขียน URL ของแบ็กเอนด์ใหม่แบบไดนามิก หากไม่ทราบวิธีสร้างพร็อกซีใหม่ ให้ดูบทแนะนำการเริ่มต้นใช้งาน
- ใน Edge UI ให้เปิดพร็อกซีที่คุณสร้างไว้ในเครื่องมือแก้ไขพร็อกซี
- เลือกแท็บพัฒนา
- จากเมนู "ใหม่" ให้เลือก New Script
- ในกล่องโต้ตอบ ให้เลือก JavaScript และตั้งชื่อสคริปต์ เช่น
js-example
- วางโค้ดต่อไปนี้ในเครื่องมือแก้ไขโค้ด และบันทึกพร็อกซี สิ่งสำคัญในการ
คือออบเจ็กต์
context
ออบเจ็กต์นี้พร้อมใช้งานในโค้ด JavaScript ที่ใดก็ได้ในขั้นตอนพร็อกซี ซึ่งใช้เพื่อรับค่าคงที่ที่เจาะจงของโฟลว์ เพื่อเรียกใช้ วิธีการรับ/ตั้งค่า และสำหรับการดำเนินการเพิ่มเติม ส่วนออบเจ็กต์นี้เป็นของ Edge โมเดลออบเจ็กต์ JavaScript หมายเหตุ นอกจากนี้ ตัวแปรโฟลว์target.url
เป็นตัวแปรแบบอ่าน/เขียนที่ติดตั้งมาในตัว จะเข้าถึงได้ในโฟลว์คำขอเป้าหมาย เมื่อเราตั้งค่าตัวแปรนั้นด้วย URL ของ API แล้ว Edge จะเรียกแบ็กเอนด์ไปยัง URL นั้น เราได้เขียน URL เป้าหมายเดิมใหม่ ซึ่งก็คือค่าใดก็ตามที่คุณระบุเมื่อสร้างพร็อกซี (เช่น http://www.example.com)
if (context.flow=="PROXY_REQ_FLOW") { var username = context.getVariable("request.formparam.user"); context.setVariable("info.username", username); } if (context.flow=="TARGET_REQ_FLOW") { context.setVariable("request.verb", "GET"); var name = context.getVariable("info.username"); var url = "http://mocktarget.apigee.net/" context.setVariable("target.url", url + "?user=" + name); }
- จากเมนูนโยบายใหม่ ให้เลือก JavaScript
- ตั้งชื่อนโยบาย เช่น
target-rewrite
ยอมรับค่าเริ่มต้นแล้วบันทึก นโยบาย - หากเลือก Endpoint Preflow สำหรับปลายทางพร็อกซีใน Navigator คุณจะเห็นว่านโยบาย เพิ่มลงในขั้นตอนนั้น
- ใน Navigator ให้เลือกไอคอน Target Endpoint PreFlow
- จาก Navigator ให้ลากนโยบาย JavaScript ไปไว้บนด้าน "Request" ของเป้าหมาย ปลายทางในเครื่องมือแก้ไขโฟลว์
- บันทึก
- เรียกใช้ API ในลักษณะนี้ โดยแทนที่ชื่อองค์กรและชื่อพร็อกซีที่ถูกต้องเป็น เหมาะสม:
curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST -d 'user=Will' http://myorg-test.apigee.net/js-example
สุดท้ายนี้ เรามาดูการกำหนด XML สำหรับนโยบาย JavaScript ที่ใช้ใน
ในตัวอย่างนี้ สิ่งสำคัญที่ควรทราบคือ <ResourceURL>
ที่ใช้เพื่อระบุไฟล์ต้นฉบับ JavaScript ที่จะดำเนินการ ใช้รูปแบบเดียวกันนี้
สำหรับไฟล์ต้นฉบับ JavaScript: jsc://filename.js
หากเป็นโค้ด JavaScript
ต้องมีการรวม คุณสามารถใช้องค์ประกอบ <IncludeURL>
อย่างน้อย 1 รายการเพื่อดำเนินการ
ตามที่อธิบายไว้ภายหลังในการอ้างอิงนี้
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="target-rewrite"> <DisplayName>target-rewrite</DisplayName> <Properties/> <ResourceURL>jsc://js-example.js</ResourceURL> </Javascript>
เรียกค่าพร็อพเพอร์ตี้จาก JavaScript
คุณสามารถเพิ่มเอลิเมนต์ <Property>
ในการกำหนดค่า จากนั้นดึงข้อมูล
ด้วย JavaScript ขณะรันไทม์
ใช้แอตทริบิวต์ name
ขององค์ประกอบเพื่อระบุชื่อที่จะใช้เข้าถึง
จากโค้ด JavaScript ค่าขององค์ประกอบ <Property>
(ค่า
ระหว่างแท็กเปิดและแท็กปิด) เป็นค่าลิเทอรัลที่พารามิเตอร์
JavaScript
ใน JavaScript คุณสามารถดึงค่าพร็อพเพอร์ตี้นโยบายได้ โดยเข้าถึงได้ในฐานะพร็อพเพอร์ตี้ของ
Properties
ตามตัวอย่างต่อไปนี้
- กําหนดค่าพร็อพเพอร์ตี้ ในที่นี้ ค่าของพร็อพเพอร์ตี้จะเป็นชื่อตัวแปร
response.status.code
<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JavascriptURLRewrite"> <DisplayName>JavascriptURLRewrite</DisplayName> <Properties> <Property name="source">response.status.code</Property> </Properties> <ResourceURL>jsc://JavascriptURLRewrite.js</ResourceURL> </Javascript>
- เรียกข้อมูลพร็อพเพอร์ตี้ด้วย JavaScript ในที่นี้คือค่าที่ดึงมา -- ชื่อตัวแปร --
จากนั้นฟังก์ชัน
getVariable
จะใช้เพื่อดึงค่าของตัวแปรvar responseCode = properties.source; // Returns "response.status.code" var value = context.getVariable(responseCode); // Get the value of response.status.code context.setVariable("response.header.x-target-response-code", value);
การจัดการข้อผิดพลาด
ตัวอย่างเช่น และการแลกเปลี่ยนความคิดเห็นเกี่ยวกับเทคนิคการจัดการข้อผิดพลาดที่คุณสามารถใช้ใน ข้อความเสริม JavaScript โปรดดู โพสต์นี้ในชุมชน Apigee คำแนะนำในชุมชน Apigee มีไว้สำหรับ ข้อมูลเท่านั้น และไม่จำเป็นต้องเป็นแนวทางปฏิบัติแนะนำที่ Apigee แนะนำเสมอไป
การอ้างอิงองค์ประกอบ
การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย JavaScript
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JavaScript-1"> <DisplayName>JavaScript 1</DisplayName> <Properties> <Property name="propName">propertyValue</Property> </Properties> <SSLInfo> <Enabled>trueFalse</Enabled> <ClientAuthEnabled>trueFalse</ClientAuthEnabled> <KeyStore>ref://keystoreRef</KeyStore> <KeyAlias>keyAlias</KeyAlias> <TrustStore>ref://truststoreRef</TrustStore> </SSLInfo> <IncludeURL>jsc://a-javascript-library-file</IncludeURL> <ResourceURL>jsc://my-javascript-source-file</ResourceURL> <Source>insert_js_code_here</Source> </Javascript>
<Javascript> ลักษณะ
<Javascript name="Javascript-1" enabled="true" continueOnError="false" async="false" timeLimit="200">
แอตทริบิวต์ต่อไปนี้มีไว้สำหรับนโยบายนี้โดยเฉพาะ
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
timeLimit |
ระบุเวลาสูงสุด (เป็นมิลลิวินาที) ที่สคริปต์ได้รับอนุญาต
ดำเนินการ ตัวอย่างเช่น หากเกินขีดจำกัด 200 มิลลิวินาที นโยบายจะแสดงข้อผิดพลาดนี้
หมายเหตุ: สำหรับบัญชีทดลองใช้ฟรี เวลาดำเนินการจะจำกัดอยู่ที่ 200 มิลลิวินาที |
ไม่มี | ต้องระบุ |
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
<IncludeURL> องค์ประกอบ
ระบุไฟล์ไลบรารี JavaScript ที่จะโหลดเป็นทรัพยากร Dependency สำหรับไฟล์ JavaScript หลัก
ที่ระบุด้วยองค์ประกอบ <ResourceURL>
หรือ <Source>
สคริปต์จะได้รับการประเมินใน
เพื่อเรียงลำดับในการระบุไว้ในนโยบาย โค้ดสามารถใช้ออบเจ็กต์ วิธีการ และ
ของโมเดลออบเจ็กต์ JavaScript
รวมทรัพยากร Dependency ของ JavaScript มากกว่า 1 รายการพร้อมด้วยข้อมูลเพิ่มเติม
องค์ประกอบ <IncludeURL>
<IncludeURL>jsc://my-javascript-dependency.js</IncludeURL>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | สตริง |
ตัวอย่าง
ดูตัวอย่างพื้นฐานในส่วนตัวอย่าง
<Property> องค์ประกอบ
ระบุพร็อพเพอร์ตี้ที่คุณเข้าถึงได้จากโค้ด JavaScript ขณะรันไทม์
<Properties> <Property name="propName">propertyValue</Property> </Properties>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | สตริง |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ชื่อ |
ระบุชื่อพร็อพเพอร์ตี้ |
ไม่มี | ต้องระบุ |
ตัวอย่าง
ดูตัวอย่างในส่วนตัวอย่าง
<ResourceURL> องค์ประกอบ
ระบุไฟล์ JavaScript หลักที่จะทำงานในโฟลว์ API คุณจัดเก็บไฟล์นี้ได้
ที่ขอบเขตพร็อกซี API (ภายใต้ /apiproxy/resources/jsc
ในแพ็กเกจพร็อกซี API หรือใน
ส่วนสคริปต์ในบานหน้าต่างนำทางของเครื่องมือแก้ไขพร็อกซี API) หรือที่องค์กร หรือ
ขอบเขตของสภาพแวดล้อมสำหรับการใช้งานซ้ำในพร็อกซี API หลายรายการ ตามที่อธิบายไว้ในไฟล์ทรัพยากร โค้ดสามารถใช้ออบเจ็กต์
และพร็อพเพอร์ตี้ของโมเดลออบเจ็กต์ JavaScript
<ResourceURL>jsc://my-javascript.js</ResourceURL>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ต้องระบุ <ResourceURL> หรือ <Source> ถ้า
ทั้ง <ResourceURL> และ <Source> ต่างก็ไม่สนใจ <ResourceURL> |
ประเภท: | สตริง |
ตัวอย่าง
ดูตัวอย่างพื้นฐานในส่วนตัวอย่าง
<Source> องค์ประกอบ
อนุญาตให้คุณแทรก JavaScript ลงในการกำหนดค่า XML ของนโยบายโดยตรง ได้แทรก โค้ด JavaScript จะทำงานเมื่อนโยบายทำงานในโฟลว์ API
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ต้องระบุ <ResourceURL> หรือ <Source> ถ้า
ทั้ง <ResourceURL> และ <Source> ต่างก็ไม่สนใจ <ResourceURL> |
ประเภท: | สตริง |
ตัวอย่าง
<Javascript name='JS-ParseJsonHeaderFullString' timeLimit='200' > <Properties> <Property name='inboundHeaderName'>specialheader</Property> <Property name='outboundVariableName'>json_stringified</Property> </Properties> <Source> var varname = 'request.header.' + properties.inboundHeaderName + '.values.string'; var h = context.getVariable(varname); if (h) { h = JSON.parse(h); h.augmented = (new Date()).valueOf(); var v = JSON.stringify(h, null, 2) + '\n'; // further indent var r = new RegExp('^(\S*)','mg'); v= v.replace(r,' $1'); context.setVariable(properties.outboundVariableName, v); } </Source> </Javascript>
<SSLInfo> องค์ประกอบ
ระบุพร็อพเพอร์ตี้ที่ใช้กำหนดค่า TLS สำหรับอินสแตนซ์ไคลเอ็นต์ HTTP ทั้งหมดที่สร้างโดย นโยบาย JavaScript
<SSLInfo> <Enabled>trueFalse</Enabled> <ClientAuthEnabled>trueFalse</ClientAuthEnabled> <KeyStore>ref://keystoreRef</KeyStore> <KeyAlias>keyAlias</KeyAlias> <TrustStore>ref://truststoreRef</TrustStore> </SSLInfo>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | สตริง |
ขั้นตอนการกำหนดค่า TLS สำหรับไคลเอ็นต์ HTTP เป็นกระบวนการเดียวกับที่คุณใช้กำหนดค่า TLS สำหรับ TargetEndpoint/TargetServer ดูการกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ เพื่อดูข้อมูลเพิ่มเติม
หมายเหตุการใช้งาน
นโยบาย JavaScript จะไม่มีโค้ดจริง แต่นโยบาย JavaScript อ้างอิง
"resource" ของ JavaScript และกำหนดขั้นตอนในโฟลว์ API ที่ JavaScript ประมวลผล คุณสามารถ
อัปโหลดสคริปต์ของคุณผ่านตัวแก้ไขพร็อกซี UI การจัดการ หรือคุณสามารถรวมสคริปต์นั้นไว้ใน
ไดเรกทอรี /resources/jsc
ในพร็อกซี API ที่คุณพัฒนาในเครื่อง
การแก้ไขข้อบกพร่องของโค้ดนโยบาย JavaScript
ใช้ฟังก์ชัน print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องไปยังธุรกรรม แผงเอาต์พุตในเครื่องมือติดตาม ดูรายละเอียดและตัวอย่างได้ที่ "แก้ไขข้อบกพร่องด้วย JavaScript" print()
วิธีดูใบแจ้งยอดการพิมพ์ในการติดตาม
- เปิดเครื่องมือการติดตามและเริ่มเซสชันการติดตามสำหรับพร็อกซีที่มี JavaScript ของคุณ
- โทรหาพร็อกซี
- ในเครื่องมือการติดตาม ให้คลิกเอาต์พุตจากธุรกรรมทั้งหมดเพื่อเปิดเอาต์พุต แผง
- ใบแจ้งยอดการพิมพ์จะปรากฏในแผงนี้
คุณสามารถใช้ฟังก์ชัน Print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องไปยังเครื่องมือติดตาม ฟังก์ชันนี้ใช้ได้โดยตรง ผ่านโมเดลออบเจ็กต์ JavaScript โปรดดูรายละเอียดที่ "ดีบัก JavaScript ด้วยprint() "
ตัวแปรโฟลว์
นโยบายนี้ไม่เติมค่าตัวแปรโดยค่าเริ่มต้น แต่คุณสามารถตั้งค่า (และรับ) ขั้นตอน ตัวแปรในโค้ด JavaScript โดยเรียกใช้เมธอดในออบเจ็กต์บริบท รูปแบบทั่วไป ซึ่งมีลักษณะดังนี้
context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"))
ออบเจ็กต์บริบทเป็นส่วนหนึ่งของโมเดลออบเจ็กต์ JavaScript ของ Apigee Edge
ข้อมูลอ้างอิงข้อผิดพลาด
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.javascript.ScriptExecutionFailed |
500 | The JavaScript policy can throw many different types of ScriptExecutionFailed errors. Commonly seen types of errors include RangeError, ReferenceError, SyntaxError, TypeError, and URIError. | build |
steps.javascript.ScriptExecutionFailedLineNumber |
500 | An error occurred in the JavaScript code. See the fault string for details. | N/A |
steps.javascript.ScriptSecurityError |
500 | A security error occurred when the JavaScript executed. See the fault string for details. | N/A |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidResourceUrlFormat |
If the format of the resource URL specified within the <ResourceURL> or the <IncludeURL> element of the JavaScript policy is invalid, then the deployment of the API proxy fails. |
build |
InvalidResourceUrlReference |
If the <ResourceURL> or the <IncludeURL> elements
refer to a JavaScript file that does not exist, then the deployment of the API proxy fails.
The referenced source file must exist either the API proxy, environment, or organization level. |
build |
WrongResourceType |
This error occurs during deployment if the <ResourceURL> or the <IncludeURL>
elements of the JavaScript policy refer to any resource type other than jsc (JavaScript file). |
build |
NoResourceURLOrSource |
The deployment of the JavaScript policy can fail with this error if the <ResourceURL>
element is not declared or if the resource URL is not defined within this element.
<ResourceURL> element is a mandatory element. Or, The <IncludeURL> element is declared
but the resource URL is not defined within this element. The <IncludeURL> element is optional
but if declared, the resource URL must be specified within the <IncludeURL> element. |
build |
Fault variables
These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "ScriptExecutionFailed" |
javascript.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | javascript.JavaScript-1.failed = true |
Example error response
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Example fault rule
<FaultRule name="JavaScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(javascript.JavaScript-1.failed = true) </Condition> </FaultRule>
สคีมา
นโยบายแต่ละประเภทจะกำหนดโดยสคีมา XML (.xsd
) สคีมานโยบายสำหรับใช้อ้างอิง
ที่มีอยู่ใน GitHub
หัวข้อที่เกี่ยวข้อง
- โมเดลออบเจ็กต์ JavaScript
- ดูวิธีการ ตัวอย่างนโยบาย และตัวอย่าง JavaScript ได้ที่ Programming API พร็อกซีด้วย JavaScript
บทความเกี่ยวกับชุมชน Apigee
คุณสามารถค้นหาบทความที่เกี่ยวข้องเหล่านี้ได้ใน Apigee ชุมชน: