คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
นโยบายสคริปต์ Python ช่วยให้คุณเพิ่มฟังก์ชันการทำงานของ Python ที่กำหนดเองลงในโฟลว์พร็อกซี API ได้ โดยเฉพาะอย่างยิ่งเมื่อฟังก์ชันการทำงานที่คุณต้องการนั้นไม่ใช่สิ่งที่นโยบายสำเร็จรูปของ Edge ให้ไว้
การสนับสนุนภาษา Python มีให้บริการผ่าน Jython เวอร์ชัน 2.5.2 ไลบรารีของบุคคลที่สามที่คุณเพิ่มต้องเป็น "Python ที่แท้จริง" (ใช้ใน Python เท่านั้น) ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มไลบรารีได้ที่ไฟล์ทรัพยากร
นโยบาย Python ไม่มีโค้ดจริง แต่นโยบาย Python อ้างอิง Python แทน
และกำหนดขั้นตอนในโฟลว์ API ที่สคริปต์ Python จะทำงาน คุณสามารถอัปโหลด
สคริปต์ของคุณผ่านตัวแก้ไขพร็อกซี UI การจัดการ หรือคุณสามารถรวมสคริปต์นั้นไว้ใน
ไดเรกทอรี /resources/py
ในพร็อกซี API ที่คุณพัฒนาในเครื่อง
ตัวอย่าง
นโยบาย Python และ แบบตัวเขียน
นโยบายสคริปต์ Python
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Script name="Python-1"> <DisplayName>Python-1</DisplayName> <ResourceURL>py://myscript.py</ResourceURL> </Script>
ในตัวอย่างนี้ เอลิเมนต์ ResourceURL จะระบุสคริปต์ Python ที่เกี่ยวข้อง ทรัพยากร
สคริปต์ Python
ข้อความนี้แสดงสิ่งที่คุณอาจรวมไว้ในสคริปต์ Python
import base64 username = flow.getVariable("request.formparam.client_id") password = flow.getVariable("request.formparam.client_secret") base64string = base64.encodestring('%s:%s' % (username, password))[:-1] authorization = "Basic "+base64string flow.setVariable("authorizationParam",authorization)
การอ้างอิงองค์ประกอบ
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Script name="Python-1"> <DisplayName>Python-1</DisplayName> <ResourceURL>py://myscript.py</ResourceURL> <IncludeURL>py://myscript_dependency.py</IncludeURL> </Script>
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
<ResourceURL> องค์ประกอบ
องค์ประกอบนี้ระบุไฟล์ Python หลักที่จะดำเนินการในโฟลว์ API คุณสามารถเก็บ
ไฟล์นี้ที่ขอบเขตพร็อกซี API (ต่ำกว่า /apiproxy/resources/py
ในพร็อกซี API
หรือในส่วน Scripts ของแผง Navigator ของเครื่องมือแก้ไขพร็อกซี API) หรือที่
ขอบเขตขององค์กรหรือสภาพแวดล้อมเพื่อนำมาใช้ซ้ำในพร็อกซี API หลายรายการ ตามที่อธิบายไว้ใน
ไฟล์ทรัพยากร โค้ดสามารถใช้
ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของโมเดลออบเจ็กต์ JavaScript
<ResourceURL>py://myscript.py</ResourceURL>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ต้องระบุ |
ประเภท: | สตริง |
<IncludeURL> องค์ประกอบ
ระบุไฟล์ Python ที่จะโหลดเป็นทรัพยากร Dependency ไปยังไฟล์ Python หลักที่ระบุด้วย
องค์ประกอบ <ResourceURL>
สคริปต์จะได้รับการประเมินตามลำดับ
แสดงอยู่ในนโยบาย
รวมทรัพยากร Dependency ของ Python มากกว่า 1 รายการพร้อมด้วยทรัพยากรเพิ่มเติม
องค์ประกอบ <IncludeURL>
<IncludeURL>py://myscript_dependency.py</IncludeURL>
ค่าเริ่มต้น: | ไม่มี |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | สตริง |
รหัสข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่ส่งกลับและตัวแปรข้อบกพร่อง ที่ Edge กำหนดไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้สำคัญที่ควรทราบ หากคุณพัฒนากฎความผิด จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.script.ScriptEvaluationFailed |
500 | นโยบาย PythonScript แสดงข้อผิดพลาด ScriptExecutionFailed หลายประเภท พบได้ทั่วไป ประเภทข้อผิดพลาดที่เห็น ได้แก่ NameError และ ZeroDivisionError | build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
InvalidResourceUrlFormat |
หากรูปแบบของ URL ทรัพยากรที่ระบุภายใน <ResourceURL> หรือ
องค์ประกอบ <IncludeURL> ของนโยบาย PythonScript ไม่ถูกต้อง การทำให้พร็อกซี API ใช้งานได้จึงล้มเหลว |
build |
InvalidResourceUrlReference |
หากองค์ประกอบ <ResourceURL> หรือ <IncludeURL>
อ้างอิงไฟล์ PythonScript ที่ไม่มีอยู่ การติดตั้งใช้งานพร็อกซี API จะล้มเหลว
ไฟล์แหล่งที่มาที่อ้างอิงต้องมีอยู่ในพร็อกซี API, สภาพแวดล้อม หรือองค์กร |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาดขณะรันไทม์ สำหรับข้อมูลเพิ่มเติม ดูสิ่งที่คุณ ที่ต้องทราบเกี่ยวกับข้อผิดพลาดด้านนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "ScriptExecutionFailed" |
pythonscript.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | pythonscript.PythonScript-1.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"", "detail": { "errorcode": "steps.script.ScriptExecutionFailed" } } }
ตัวอย่างกฎข้อผิดพลาด
<FaultRule name="PythonScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(pythonscript.PythonScript-1.failed = true) </Condition> </FaultRule>