คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
นโยบายนี้ช่วยให้คุณเพิ่มโค้ด JavaScript ที่กำหนดเองซึ่งจะดำเนินการภายในบริบทของโฟลว์พร็อกซี API ในโค้ด JavaScript ที่กำหนดเอง คุณสามารถใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของรูปแบบออบเจ็กต์ JavaScript ของ Apigee Edge โมเดลออบเจ็กต์ช่วยให้คุณรับ ตั้งค่า และนำตัวแปร ในบริบทของโฟลว์พร็อกซีออกได้ นอกจากนี้ คุณยังใช้ฟังก์ชันการเข้ารหัสพื้นฐานที่มาพร้อมกับโมเดลออบเจ็กต์ได้ด้วย
เกี่ยวกับ
นโยบาย JavaScript มี Use Case มากมาย เช่น คุณสามารถรับและตั้งค่าตัวแปรโฟลว์ เรียกใช้ตรรกะที่กำหนดเองและจัดการข้อผิดพลาด ดึงข้อมูลจากคำขอหรือ การตอบกลับ แก้ไข URL เป้าหมายของแบ็กเอนด์แบบไดนามิก และอื่นๆ อีกมากมาย นโยบายนี้ช่วยให้คุณ ใช้ลักษณะการทำงานที่กำหนดเองซึ่งนโยบาย Edge มาตรฐานอื่นๆ ไม่ครอบคลุม ในความเป็นจริง คุณ สามารถใช้นโยบาย JavaScript เพื่อให้ได้ลักษณะการทำงานหลายอย่างเช่นเดียวกับที่นโยบายอื่นๆ เช่น AssignMessage และ ExtractVariable นำมาใช้
กรณีการใช้งานหนึ่งที่เราไม่แนะนำให้ใช้กับนโยบาย JavaScript คือการบันทึก นโยบายการบันทึกข้อความเหมาะสําหรับการบันทึกลงในแพลตฟอร์มการบันทึกของบุคคลที่สาม เช่น Splunk, Sumo และ Loggly มากกว่า และคุณจะปรับปรุงประสิทธิภาพของพร็อกซี API ได้ด้วยการใช้นโยบายการบันทึกข้อความใน PostClientFlow ซึ่งจะทํางานหลังจากที่ส่งการตอบกลับกลับไปยังไคลเอ็นต์แล้ว
นโยบาย JavaScript ช่วยให้คุณระบุไฟล์ต้นฉบับ JavaScript ที่จะเรียกใช้ หรือ
คุณจะรวมโค้ด JavaScript ไว้ในการกำหนดค่าของนโยบายโดยตรงด้วยองค์ประกอบ <Source>
ก็ได้
ไม่ว่าจะด้วยวิธีใด โค้ด JavaScript จะทำงานเมื่อขั้นตอนที่แนบนโยบายไว้ทำงาน
สำหรับตัวเลือกไฟล์ต้นฉบับ ระบบจะจัดเก็บซอร์สโค้ดไว้ในตำแหน่งมาตรฐานภายในแพ็กเกจพร็อกซีเสมอ ซึ่งก็คือ apiproxy/resources/jsc หรือจะจัดเก็บซอร์สโค้ดไว้ในไฟล์ทรัพยากรที่ระดับสภาพแวดล้อมหรือองค์กรก็ได้ ดูวิธีการได้ที่ไฟล์ทรัพยากร นอกจากนี้ คุณยังอัปโหลด JavaScript ผ่านเครื่องมือแก้ไขพร็อกซีของ Apigee UI ได้ด้วย
ไฟล์แหล่งที่มาของ JavaScript ต้องมีส่วนขยาย .js เสมอ
ดูเวอร์ชัน JavaScript ที่รองรับในปัจจุบันได้ที่ซอฟต์แวร์และเวอร์ชันที่รองรับ
วิดีโอ
ดูวิดีโอสั้นๆ เพื่อดูวิธีสร้างส่วนขยายนโยบายที่กำหนดเองโดยใช้นโยบาย JavaScript
ตัวอย่าง
เขียน URL เป้าหมายใหม่
กรณีการใช้งานที่พบบ่อยคือการดึงข้อมูลจากเนื้อหาคำขอ จัดเก็บไว้ในตัวแปรโฟลว์ และใช้ตัวแปรโฟลว์นั้นในที่อื่นๆ ในโฟลว์พร็อกซี สมมติว่าคุณมีแอป ที่ผู้ใช้ป้อนชื่อในแบบฟอร์ม HTML แล้วส่ง คุณต้องการให้พร็อกซี API ดึงข้อมูลแบบฟอร์มและเพิ่มลงใน URL ที่ใช้เรียกใช้บริการแบ็กเอนด์แบบไดนามิก คุณจะทำเช่นนี้ในนโยบาย JavaScript ได้อย่างไร
หมายเหตุ: หากต้องการลองใช้ตัวอย่างนี้ เราจะถือว่าคุณได้สร้างพร็อกซีใหม่ในเครื่องมือแก้ไขพร็อกซีแล้ว เมื่อสร้างแล้ว ให้ระบุ URL ของบริการแบ็กเอนด์เป็น http://www.example.com สำหรับตัวอย่างนี้ เราจะเขียน URL ของแบ็กเอนด์ใหม่แบบไดนามิก หากไม่ทราบวิธีสร้างพร็อกซีใหม่ โปรดดูบทแนะนำการเริ่มต้นใช้งาน .
- ใน UI ของ Edge ให้เปิดพร็อกซีที่คุณสร้างในเครื่องมือแก้ไขพร็อกซี
- เลือกแท็บพัฒนา
- เลือกสคริปต์ใหม่จากเมนูใหม่
- ในกล่องโต้ตอบ ให้เลือก JavaScript และตั้งชื่อสคริปต์ เช่น
js-example - วางโค้ดต่อไปนี้ในตัวแก้ไขโค้ดแล้วบันทึกพร็อกซี สิ่งสำคัญที่ควรสังเกตคือ
contextออบเจ็กต์ ออบเจ็กต์นี้พร้อมใช้งานกับโค้ด JavaScript ทุกที่ในโฟลว์ของพร็อกซี ใช้เพื่อรับค่าคงที่เฉพาะโฟลว์ เรียกใช้เมธอด get/set ที่มีประโยชน์ และสำหรับการดำเนินการอื่นๆ ส่วนออบเจ็กต์นี้เป็นของรูปแบบออบเจ็กต์ JavaScript ของ Edge โปรดทราบ ว่าตัวแปรโฟลว์target.urlเป็นตัวแปรบิวท์อินแบบอ่าน/เขียนที่ เข้าถึงได้ในโฟลว์คำขอเป้าหมาย เมื่อเราตั้งค่าตัวแปรนั้นด้วย URL ของ API แล้ว Edge จะทำการเรียกแบ็กเอนด์ไปยัง URL นั้น เราได้เขียน 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ยอมรับค่าเริ่มต้นและบันทึก นโยบาย - หากเลือก Preflow ของพร็อกซีปลายทางในแถบนำทาง คุณจะเห็นว่ามีการเพิ่มนโยบาย ลงในโฟลว์นั้น
- ในแถบนำทาง ให้เลือกไอคอน Target Endpoint PreFlow
- จากแถบนำทาง ให้ลากนโยบาย JavaScript ไปยังด้านคำขอของปลายทางเป้าหมายในเครื่องมือแก้ไขโฟลว์
- บันทึก
- เรียก 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
รวมทรัพยากรการอ้างอิง 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 หรือใน
ส่วนสคริปต์ของแผง Navigator ของเครื่องมือแก้ไขพร็อกซี 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 จะอ้างอิงถึง "ทรัพยากร" JavaScript และกำหนดขั้นตอนในโฟลว์ API ที่ JavaScript ทำงาน คุณสามารถ
อัปโหลดสคริปต์ผ่านเครื่องมือแก้ไขพร็อกซีของ UI การจัดการ หรือจะรวมไว้ใน
ไดเรกทอรี /resources/jsc ในพร็อกซี API ที่คุณพัฒนาในเครื่องก็ได้
การแก้ไขข้อบกพร่องของโค้ดนโยบาย JavaScript
ใช้ฟังก์ชัน print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องไปยังแผงเอาต์พุตของธุรกรรม ในเครื่องมือติดตาม ดูรายละเอียดและตัวอย่างได้ที่การแก้ไขข้อบกพร่องด้วยคำสั่ง JavaScript print()
วิธีดูคำสั่งพิมพ์ใน Trace
- เปิดเครื่องมือติดตามและเริ่มเซสชันการติดตามสำหรับพร็อกซีที่มีนโยบาย 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 ได้ที่การเขียนโปรแกรมพร็อกซี API ด้วย JavaScript
บทความในชุมชน Apigee
คุณดูบทความที่เกี่ยวข้องเหล่านี้ได้ในชุมชน Apigee