คุณกําลังดูเอกสาร Apigee Edge
ดูเอกสารประกอบเกี่ยวกับ Apigee X

อะไร
นโยบายนี้ให้คุณเพิ่มโค้ด JavaScript ที่กําหนดเองซึ่งดําเนินการในบริบทของโฟลว์พร็อกซี API ในโค้ด JavaScript ที่กําหนดเอง คุณจะใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของโมเดลออบเจ็กต์ JavaScript ของ Apigee Edge ได้ โมเดลออบเจ็กต์ช่วยให้คุณรับ ตั้งค่า และนําตัวแปรในบริบทโฟลว์ของพร็อกซีออกได้ นอกจากนี้ คุณยังใช้ฟังก์ชันการเข้ารหัสขั้นพื้นฐานที่มากับโมเดลออบเจ็กต์ได้อีกด้วย
เกี่ยวกับ
นโยบาย JavaScript มีกรณีการใช้งานมากมาย เช่น คุณสามารถรับและตั้งค่าตัวแปรโฟลว์ เรียกใช้ตรรกะที่กําหนดเอง และจัดการข้อผิดพลาดทันที ดึงข้อมูลจากคําขอหรือการตอบกลับ แก้ไข URL เป้าหมายแบ็กเอนด์แบบไดนามิก และอื่นๆ อีกมากมาย นโยบายนี้ช่วยให้คุณใช้งานลักษณะการทํางานที่กําหนดเองซึ่งไม่อยู่ภายใต้นโยบาย Edge มาตรฐานอื่นๆ ได้ อันที่จริงแล้ว คุณใช้นโยบาย JavaScript เพื่อสร้างพฤติกรรมเดียวกันกับหลายๆ นโยบายที่นโยบายอื่นใช้ได้ด้วย เช่น assignMessage และ ExtractVariable
กรณีการใช้งานหนึ่งที่เราไม่แนะนําให้ใช้กับนโยบาย JavaScript คือการบันทึก นโยบายการบันทึกข้อความเหมาะอย่างยิ่งสําหรับการบันทึกไปยังแพลตฟอร์มการบันทึกของบุคคลที่สาม เช่น Splunk, Sumo และ Loggly และช่วยปรับปรุงประสิทธิภาพพร็อกซี API ด้วยการใช้นโยบาย Logging ข้อความใน 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 ให้เปิดพร็อกซีที่คุณสร้างไว้ในตัวแก้ไขพร็อกซี
- เลือกแท็บพัฒนา
- เลือกสคริปต์ใหม่จากเมนูใหม่
- ในกล่องโต้ตอบ ให้เลือก 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
ยอมรับค่าเริ่มต้นและบันทึกนโยบาย - หากเลือกขั้นตอนก่อนหน้าของปลายทางพร็อกซีใน Navigator คุณจะเห็นว่ามีการเพิ่มนโยบายไปยังขั้นตอนนั้นแล้ว
- ใน Navigator ให้เลือกไอคอน Target Endpoint PreFlow
- จาก Navigator ให้ลากนโยบาย 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">
แอตทริบิวต์ต่อไปนี้เฉพาะเจาะจงสําหรับนโยบายนี้
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
จํากัดเวลา |
ระบุเวลาสูงสุด (หน่วยเป็นมิลลิวินาที) ที่สคริปต์ได้รับอนุญาตให้เรียกใช้ เช่น หากเกินขีดจํากัด 200 มิลลิวินาที นโยบายจะแสดงข้อผิดพลาดนี้
หมายเหตุ: สําหรับบัญชีทดลองใช้ฟรี จะใช้เวลาดําเนินการไม่เกิน 200 มิลลิวินาที |
ไม่มีข้อมูล | จำเป็น |
ตารางต่อไปนี้จะอธิบายถึงแอตทริบิวต์ที่ใช้กับองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ ใช้องค์ประกอบ |
ไม่มีข้อมูล | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกํากับนโยบายในตัวแก้ไขพร็อกซี UI การจัดการด้วยชื่อภาษาอื่นที่เป็นธรรมชาติ
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มีข้อมูล หากคุณไม่ใช้องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
Type | สตริง |
องค์ประกอบ <IncludeURL>
ระบุไฟล์ไลบรารี JavaScript ที่จะโหลดตามไฟล์ 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 จะอ้างอิง "ทรัพยากร" 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
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายถึงรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่ส่งกลับมาและตัวแปรที่ผิดพลาดซึ่ง Edge กําหนดไว้เมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสําคัญที่ควรทราบหากคุณกําลังสร้างกฎที่ผิดพลาดเพื่อจัดการข้อผิดพลาด หากต้องการดูข้อมูลเพิ่มเติม โปรดดูสิ่งที่คุณจําเป็นต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด
ข้อผิดพลาดรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทํางาน
รหัสผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.javascript.ScriptExecutionFailed |
500 | นโยบาย JavaScript สามารถแสดงข้อผิดพลาด ScriptExecutionFailed ได้หลายประเภท ประเภทข้อผิดพลาดที่พบโดยทั่วไป ได้แก่ RangeError, ReferenceError, ไวยากรณ์ข้อผิดพลาด, 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 คือส่วนสุดท้ายของโค้ด Fault | 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