คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
อะไร
นโยบายนี้ช่วยให้คุณเพิ่มโค้ด JavaScript ที่กำหนดเองซึ่งทำงานในบริบทของโฟลว์พร็อกซี API ได้ ในโค้ด JavaScript ที่กำหนดเอง คุณสามารถใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของ โมเดลออบเจ็กต์ JavaScript ของ Apigee Edge ได้ โมเดลออบเจ็กต์ช่วยให้คุณรับ ตั้งค่า และนำ ตัวแปรออกในบริบทของโฟลว์พร็อกซีได้ นอกจากนี้ คุณ ยังใช้ฟังก์ชันการเข้ารหัสพื้นฐานที่มาพร้อมกับโมเดลออบเจ็กต์ได้ด้วย
เกี่ยวกับ
นโยบาย JavaScript มีกรณีการใช้งานมากมาย เช่น คุณสามารถรับและตั้งค่าตัวแปรโฟลว์ ดำเนินการตรรกะที่กำหนดเองและจัดการข้อผิดพลาด แยกข้อมูลจากคำขอหรือ การตอบสนอง แก้ไข URL ปลายทางของแบ็กเอนด์แบบไดนามิก และอื่นๆ อีกมากมาย นโยบายนี้ช่วยให้คุณ ใช้ลักษณะการทำงานที่กำหนดเองซึ่งนโยบาย Edge มาตรฐานอื่นๆ ไม่ครอบคลุมได้ อันที่จริง คุณ สามารถใช้นโยบาย JavaScript เพื่อให้ได้ลักษณะการทำงานหลายอย่างที่นโยบายอื่นๆ เช่น AssignMessage และ ExtractVariable ใช้ได้
กรณีการใช้งานหนึ่งที่เราไม่แนะนำให้นโยบาย 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 ที่ใช้เรียกใช้บริการแบ็กเอนด์แบบไดนามิก คุณจะทำเช่นนี้ในนโยบาย 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 ของปลายทางพร็อกซีในแถบนำทาง คุณจะเห็นว่าระบบได้เพิ่มนโยบาย ลงในโฟลว์นั้นแล้ว
- ในแถบนำทาง ให้เลือกไอคอน 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 ได้
รวมทรัพยากร Dependency ของ JavaScript มากกว่า 1 รายการด้วยองค์ประกอบเพิ่มเติม
<IncludeURL>
<IncludeURL>jsc://my-javascript-dependency.js</IncludeURL>
| ค่าเริ่มต้น: | ไม่มี |
| การมีอยู่: | ไม่บังคับ |
| ประเภท: | สตริง |
ตัวอย่าง
ดูตัวอย่างพื้นฐานในส่วนตัวอย่าง
องค์ประกอบ <Property>
ระบุพร็อพเพอร์ตี้ที่คุณเข้าถึงได้จากโค้ด JavaScript ในรันไทม์
<Properties> <Property name="propName">propertyValue</Property> </Properties>
| ค่าเริ่มต้น: | ไม่มี |
| การมีอยู่: | ไม่บังคับ |
| ประเภท: | สตริง |
แอตทริบิวต์
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีอยู่ |
|---|---|---|---|
| name |
ระบุชื่อของพร็อพเพอร์ตี้ |
ไม่มี | ต้องระบุ |
ตัวอย่าง
ดูตัวอย่างในส่วนตัวอย่าง
องค์ประกอบ <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 และกำหนดขั้นตอนในโฟลว์ API ที่ JavaScript จะทำงาน คุณสามารถ
อัปโหลดสคริปต์ผ่านเครื่องมือแก้ไขพร็อกซี UI การจัดการ หรือรวมสคริปต์ไว้ใน
ไดเรกทอรี/resources/jsc ในพร็อกซี API ที่คุณพัฒนาในเครื่อง
การแก้ไขข้อบกพร่องของโค้ดนโยบาย JavaScript
ใช้ฟังก์ชัน print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องในแผงเอาต์พุตของธุรกรรม ในเครื่องมือติดตาม ดูรายละเอียดและตัวอย่างได้ที่แก้ไขข้อบกพร่องด้วยคำสั่ง print() ของ JavaScript
วิธีดูคำสั่งพิมพ์ในเครื่องมือติดตาม
- เปิดเครื่องมือติดตามและเริ่มเซสชันการติดตามสำหรับพร็อกซีที่มีนโยบาย JavaScript
- เรียกใช้พร็อกซี
- ในเครื่องมือติดตาม ให้คลิกเอาต์พุตจากธุรกรรมทั้งหมด เพื่อเปิดแผงเอาต์พุต

- คำสั่งพิมพ์จะปรากฏในแผงนี้
คุณสามารถใช้ฟังก์ชัน print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องในเครื่องมือติดตาม ฟังก์ชันนี้พร้อมใช้งานโดยตรง ผ่านโมเดลออบเจ็กต์ JavaScript ดูรายละเอียดได้ที่ "แก้ไขข้อบกพร่อง JavaScript ด้วยคำสั่ง print() statements"
ตัวแปรโฟลว์
นโยบายนี้ไม่ได้ป้อนข้อมูลตัวแปรใดๆ โดยค่าเริ่มต้น แต่คุณสามารถตั้งค่า (และรับ) ตัวแปรโฟลว์ ในโค้ด JavaScript ได้โดยการเรียกใช้เมธอดในออบเจ็กต์บริบท รูปแบบทั่วไป มีลักษณะดังนี้
context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"))
ออบเจ็กต์บริบทเป็นส่วนหนึ่งของโมเดลออบเจ็กต์ JavaScript ของ Apigee Edge JavaScript object model
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่ส่งกลับและตัวแปรข้อบกพร่อง ที่ Edge กำหนดไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้สำคัญที่ควรทราบ หากคุณพัฒนากฎความผิด จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
| รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
|---|---|---|---|
steps.javascript.ScriptExecutionFailed |
500 | นโยบาย JavaScript สามารถแสดงข้อผิดพลาด ScriptExecutionFailed ประเภทต่างๆ ได้ พบได้ทั่วไป ประเภทข้อผิดพลาดที่เห็น ได้แก่ RangeError ReferenceError, SyntaxError TypeError และ URIError | build |
steps.javascript.ScriptExecutionFailedLineNumber |
500 | เกิดข้อผิดพลาดในโค้ด JavaScript ดูรายละเอียดจากสตริงข้อผิดพลาด | ไม่มี |
steps.javascript.ScriptSecurityError |
500 | เกิดข้อผิดพลาดด้านความปลอดภัยขณะเรียกใช้ JavaScript ดูสตริงข้อผิดพลาดสำหรับ รายละเอียด | ไม่มี |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
| ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
|---|---|---|
InvalidResourceUrlFormat |
หากรูปแบบของ URL ทรัพยากรที่ระบุภายในองค์ประกอบ <ResourceURL> หรือ <IncludeURL> ของนโยบาย JavaScript ไม่ถูกต้อง การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว |
build |
InvalidResourceUrlReference |
หากองค์ประกอบ <ResourceURL> หรือ <IncludeURL>
อ้างอิงไฟล์ JavaScript ที่ไม่มีอยู่ การติดตั้งใช้งานพร็อกซี API จะล้มเหลว
ไฟล์แหล่งที่มาที่อ้างอิงต้องมีอยู่ในพร็อกซี API, สภาพแวดล้อม หรือองค์กร |
build |
WrongResourceType |
ข้อผิดพลาดนี้เกิดขึ้นระหว่างการทำให้ใช้งานได้หาก <ResourceURL> หรือ <IncludeURL>
องค์ประกอบของนโยบาย JavaScript หมายถึงประเภททรัพยากรใดๆ ที่ไม่ใช่ jsc (ไฟล์ JavaScript) |
build |
NoResourceURLOrSource |
การทำให้นโยบาย JavaScript ใช้งานได้อาจล้มเหลวด้วยข้อผิดพลาดนี้ หาก <ResourceURL>
ไม่มีการประกาศองค์ประกอบ หรือไม่มีการระบุ URL ทรัพยากรภายในองค์ประกอบนี้
องค์ประกอบ <ResourceURL> เป็นองค์ประกอบที่จำเป็น หรือประกาศเอลิเมนต์ <IncludeURL>
แต่ URL ของทรัพยากรไม่ได้กำหนดไว้ภายในองค์ประกอบนี้ องค์ประกอบ <IncludeURL> เป็นค่าที่ไม่บังคับ
แต่หากมีการประกาศไว้ คุณต้องระบุ URL ทรัพยากรภายในองค์ประกอบ <IncludeURL> |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาดขณะรันไทม์ สำหรับข้อมูลเพิ่มเติม ดูสิ่งที่คุณ ที่ต้องทราบเกี่ยวกับข้อผิดพลาดด้านนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "ScriptExecutionFailed" |
javascript.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | javascript.JavaScript-1.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
ตัวอย่างกฎข้อผิดพลาด
<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 ชุมชน: