คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
นโยบาย Service Callout ช่วยให้คุณเรียกใช้บริการอื่นจากโฟลว์พร็อกซี API ได้ คุณ สามารถเรียกใช้บริการภายนอก (เช่น จุดสิ้นสุดของบริการ RESTful ภายนอก) หรือ บริการภายใน (เช่น พร็อกซี API ในองค์กรและสภาพแวดล้อมเดียวกัน)
- ในกรณีการใช้งานภายนอก คุณจะเรียกใช้ API ของบุคคลที่สามที่อยู่นอกพร็อกซี ระบบจะแยกวิเคราะห์การตอบกลับจาก API ของบุคคลที่สามและแทรกลงในข้อความการตอบกลับของ API เพื่อเพิ่มคุณค่าและ "ผสม" ข้อมูลสำหรับผู้ใช้ปลายทางของแอป คุณยังส่งคำขอ โดยใช้นโยบายการเรียกใช้บริการในขั้นตอนการส่งคำขอ แล้วส่งข้อมูลในการตอบกลับ ไปยัง TargetEndpoint ของพร็อกซี API ได้ด้วย
- ในกรณีการใช้งานอีกกรณีหนึ่ง คุณจะเรียกใช้พร็อกซีที่อยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับ พร็อกซีที่คุณเรียกใช้ ตัวอย่างเช่น คุณอาจพบว่าฟังก์ชันนี้มีประโยชน์เมื่อคุณมีพร็อกซีที่ มีฟังก์ชันการทำงานระดับต่ำที่แยกกันซึ่งพร็อกซีอื่นๆ อย่างน้อย 1 รายการจะใช้ เช่น พร็อกซีที่แสดงการดำเนินการสร้าง/อ่าน/อัปเดต/ลบด้วยที่เก็บข้อมูลแบ็กเอนด์ อาจเป็นพร็อกซีเป้าหมายสำหรับพร็อกซีอื่นๆ อีกหลายรายการที่แสดงข้อมูลต่อไคลเอ็นต์
นโยบายรองรับคำขอผ่าน HTTP และ HTTPS
ตัวอย่าง
การโทรในเครื่องไปยังพร็อกซีภายใน
<LocalTargetConnection>
<APIProxy>data-manager</APIProxy>
<ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>ตัวอย่างนี้สร้างการเรียกไปยังพร็อกซี API ในเครื่อง (ซึ่งอยู่ในองค์กรและสภาพแวดล้อมเดียวกัน) ที่ชื่อ data-manager โดยระบุปลายทางพร็อกซีที่มีชื่อ default
URL เป็นตัวแปร
<HTTPTargetConnection>
<URL>http://example.com/{request.myResourcePath}</URL>
</HTTPTargetConnection>ตัวอย่างนี้ใช้ตัวแปรใน URL เพื่อสร้าง URL ของเป้าหมายแบบไดนามิก ส่วนโปรโตคอลของ URL, http://, ไม่สามารถระบุได้โดยตัวแปร นอกจากนี้ คุณต้องใช้ตัวแปรแยกกันสำหรับส่วนโดเมนของ URL และ สำหรับส่วนที่เหลือของ URL
คำขอการเข้ารหัสพิกัดภูมิศาสตร์ / คำขอคำจำกัดความของ Google
<ServiceCallout name="ServiceCallout-GeocodingRequest1"> <DisplayName>Inline request message</DisplayName> <Request variable="authenticationRequest"> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.postalcode}</QueryParam> <QueryParam name="region">{request.queryparam.country}</QueryParam> <QueryParam name="sensor">false</QueryParam> </QueryParams> </Set> </Request> <Response>GeocodingResponse</Response> <Timeout>30000</Timeout> <HTTPTargetConnection> <URL>http://maps.googleapis.com/maps/api/geocode/json</URL> </HTTPTargetConnection> </ServiceCallout>
http://maps.googleapis.com/maps/api/geocode/json
คุณสามารถกำหนดออบเจ็กต์คำขอในนโยบายการเรียกใช้บริการได้โดยตรงแทนการใช้นโยบาย เช่น Assign Message เพื่อสร้างออบเจ็กต์คำขอ ในตัวอย่างนี้ นโยบายข้อความไฮไลต์ของบริการ จะกำหนดค่าของพารามิเตอร์การค้นหา 3 รายการที่ส่งไปยังบริการภายนอก คุณสร้างข้อความคำขอทั้งหมดในนโยบาย Service Callout ที่ระบุเพย์โหลด ประเภทการเข้ารหัส เช่น application/xml ส่วนหัว พารามิเตอร์แบบฟอร์ม ฯลฯ ได้
ต่อไปนี้เป็นอีกตัวอย่างหนึ่งที่สร้างคำขอก่อนที่จะไปถึงนโยบายข้อความกระตุ้นให้ดำเนินการเกี่ยวกับบริการ
<ServiceCallout name="ServiceCallout-GeocodingRequest2"> <Request clearPayload="false" variable="GeocodingRequest"/> <Response>GeocodingResponse</Response> <Timeout>30000</Timeout> <HTTPTargetConnection> <URL>http://maps.googleapis.com/maps/api/geocode/json</URL> </HTTPTargetConnection> </ServiceCallout>
ระบบจะดึงเนื้อหาของข้อความคำขอจากตัวแปรที่ชื่อ GeocodingRequest (ซึ่งอาจมีค่า เช่น จากนโยบาย AssignMessage) ระบบจะกําหนดข้อความตอบกลับให้กับตัวแปร ที่ชื่อ GeocodingResponse ซึ่งจะพร้อมให้วิเคราะห์โดยนโยบายตัวแปร Extract หรือโดยโค้ดที่กําหนดเองที่เขียนใน JavaScript หรือ Java นโยบายจะรอการตอบกลับจาก Google Geocoding API เป็นเวลา 30 วินาทีก่อนที่จะหมดเวลา
ดูพร็อกซี API ตัวอย่างที่สมบูรณ์ซึ่งใช้การเรียกใช้บริการตัวอย่างนี้ รวมถึงนโยบาย Assign Message และ Extract Variables ได้ที่การใช้การประกอบนโยบาย
เรียกเซิร์ฟเวอร์เป้าหมาย
<ServiceCallout async="false" continueOnError="false" enabled="true" name="service-callout"> <DisplayName>service-callout</DisplayName> <Properties/> <Request clearPayload="true" variable="myRequest"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </Request> <Response>myResponse</Response> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection> </ServiceCallout>
นโยบายนี้ใช้แอตทริบิวต์ LoadBalancer เพื่อเรียกเซิร์ฟเวอร์เป้าหมายและทำการจัดสรรภาระงาน ในเซิร์ฟเวอร์เหล่านั้น ในตัวอย่างนี้ ระบบจะกระจายภาระงานไปยังเซิร์ฟเวอร์เป้าหมาย 2 เครื่องชื่อ "httpbin" และ "yahoo" ดูข้อมูลเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์เป้าหมายสำหรับพร็อกซีและการกำหนดค่า การปรับสมดุลการรับส่ง ได้ที่การปรับสมดุลการรับส่งใน เซิร์ฟเวอร์แบ็กเอนด์
เกี่ยวกับนโยบายข้อความไฮไลต์บริการ
คุณสามารถใช้นโยบาย Service Callout ในพร็อกซี API ได้ในหลายสถานการณ์ เช่น คุณสามารถกำหนดค่าพร็อกซี API เพื่อเรียกใช้บริการภายนอกเพื่อส่งข้อมูลตำแหน่งทางภูมิศาสตร์ รีวิวของลูกค้า รายการจากแคตตาล็อกค้าปลีกของพาร์ทเนอร์ และอื่นๆ
โดยปกติแล้ว Callout จะใช้ร่วมกับนโยบายอื่นๆ อีก 2 รายการ ได้แก่ กำหนดข้อความและดึงข้อมูลตัวแปร
- คำขอ: Assign Message จะสร้างข้อความคำขอที่ส่งไปยังบริการระยะไกล
-
การตอบกลับ: ฟังก์ชัน Extract Variables จะแยกวิเคราะห์การตอบกลับและแยกเนื้อหาที่เฉพาะเจาะจง ออกมา
โดยปกติแล้ว องค์ประกอบของนโยบายข้อความไฮไลต์บริการมีดังนี้
- กำหนดนโยบาย ข้อความ: สร้างข้อความคำขอ ป้อนข้อมูลส่วนหัว HTTP พารามิเตอร์การค้นหา ตั้งค่ากริยา HTTP ฯลฯ
- นโยบาย Service Callout: อ้างอิงข้อความที่สร้างขึ้นโดยนโยบาย Assign Message
กำหนด URL เป้าหมายสำหรับการเรียกภายนอก และกำหนดชื่อสำหรับออบเจ็กต์การตอบกลับ
ที่บริการเป้าหมายส่งคืน
นอกจากนี้ คุณยังแคชการตอบกลับของ Service Callout เพื่อปรับปรุงประสิทธิภาพได้ตามที่อธิบายไว้ใน กระทู้ชุมชน Apigee นี้: ฉันจะจัดเก็บผลลัพธ์ของนโยบาย ServiceCallout ไว้ในแคชและเรียกข้อมูลจากแคชในภายหลังได้อย่างไร - Extract Variables policy: โดยทั่วไปจะกำหนดนิพจน์ JSONPath หรือ XPath ที่แยกวิเคราะห์ข้อความที่สร้างขึ้น โดย Service Callout จากนั้นนโยบายจะตั้งค่าตัวแปรที่มีค่าที่แยกวิเคราะห์จาก การตอบกลับของ Service Callout
ดูการใช้การ เขียนนโยบายเพื่อดูพร็อกซี API ตัวอย่างที่สมบูรณ์ซึ่งใช้นโยบาย Service Callout พร้อมกับ นโยบาย Assign Message และ Extract Variables
การจัดการข้อผิดพลาดที่กำหนดเอง
การอ้างอิงองค์ประกอบ
ต่อไปนี้คือองค์ประกอบและแอตทริบิวต์ที่คุณกำหนดค่าในนโยบายนี้ได้
<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1"> <DisplayName>Custom label used in UI</DisplayName> <Request clearPayload="true" variable="myRequest"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Remove> <ReasonPhrase/> <StatusCode/> <Path/> <Version/> <Verb/> </Remove> <Copy> <ReasonPhrase/> <StatusCode/> <Path/> <Version/> <Verb/> </Copy> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <Payload/> <ReasonPhrase/> <StatusCode/> <Path/> <Version/> <Verb/> </Set> </Request> <Response>calloutResponse</Response> <Timeout>30000</Timeout> <HTTPTargetConnection> <URL>http://example.com</URL> <LoadBalancer/> <SSLInfo/> <Properties/> </HTTPTargetConnection> <LocalTargetConnection> <APIProxy/> <ProxyEndpoint/> <Path/> </LocalTargetConnection> </ServiceCallout>
แอตทริบิวต์ <ServiceCallout>
<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
|---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
| ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
|---|---|
| การมีบุคคลอยู่ | ไม่บังคับ |
| ประเภท | สตริง |
องค์ประกอบ <Request>
ระบุตัวแปรที่มีข้อความคำขอที่ส่งจากพร็อกซี API ไปยังบริการอื่น นโยบายก่อนหน้าในโฟลว์สามารถสร้างตัวแปรได้ หรือคุณจะสร้างตัวแปรในนโยบายข้อความไฮไลต์ของบริการก็ได้
<Request clearPayload="true" variable="myRequest"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <Remove> <ReasonPhrase/> <StatusCode/> <Path/> <Version/> <Verb/> </Remove> <Copy> <ReasonPhrase/> <StatusCode/> <Path/> <Version/> <Verb/> </Copy> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <Payload/> <ReasonPhrase/> <StatusCode/> <Path/> <Version/> <Verb/> </Set> </Request>
ไวยากรณ์ของแท็ก <Remove>, <Copy>, <Add> และ <Set> จะเหมือนกับของ Assign Message policy
นโยบายจะแสดงข้อผิดพลาดหากไม่สามารถแก้ไขข้อความคำขอหรือเป็นข้อความคำขอประเภทที่ไม่ถูกต้อง
ในตัวอย่างที่ง่ายที่สุด คุณจะส่งตัวแปรที่มีข้อความคำขอที่สร้างขึ้น ก่อนหน้านี้ในโฟลว์ของพร็อกซี API
<Request clearPayload="true" variable="myRequest"/>
หรือจะป้อนข้อความคำขอที่ส่งไปยังบริการภายนอกในนโยบาย Service Callout เองก็ได้
<Request> <Set> <Headers> <Header name="Accept">application/json</Header> </Headers> <Verb>POST</Verb> <Payload contentType="application/json">{"message":"my test message"}</Payload> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </Request>
| ค่าเริ่มต้น | หากคุณละเว้นองค์ประกอบ Request หรือแอตทริบิวต์ใดๆ ขององค์ประกอบนั้น Edge จะกำหนดค่าเริ่มต้นต่อไปนี้
<Request clearPayload="true" variable="servicecallout.request"/> มาดูกันว่าค่าเริ่มต้นเหล่านี้หมายความว่าอย่างไร ก่อนอื่น
คุณควรทราบชื่อเริ่มต้นนี้หากใช้การมาสก์ข้อมูล หากละเว้นชื่อตัวแปร
คุณต้องเพิ่ม |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | ไม่มี |
Attributes
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
|---|---|---|---|
| ตัวแปร |
ชื่อของตัวแปรที่จะมีข้อความคำขอ |
servicecallout.request |
ไม่บังคับ |
| clearPayload |
หากเป็น ตั้งค่าตัวเลือก clearPayload เป็น false ก็ต่อเมื่อต้องใช้ข้อความคำขอหลังจากที่ ดำเนินการเรียกใช้บริการแล้ว |
จริง | ไม่บังคับ |
องค์ประกอบ <Request>/<IgnoreUnresolvedVariables>
เมื่อตั้งค่าเป็น true นโยบาย จะไม่สนใจข้อผิดพลาดของตัวแปรที่ยังไม่ได้รับการแก้ไขในคำขอ
<Request clearPayload="true" variable="myRequest"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </Request>
| ค่าเริ่มต้น | เท็จ |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | บูลีน |
องค์ประกอบ <Response>
รวมองค์ประกอบนี้เมื่อตรรกะของพร็อกซี API ต้องการการตอบกลับจากการเรียกจากระยะไกลเพื่อ การประมวลผลเพิ่มเติม
เมื่อมีองค์ประกอบนี้ จะเป็นการระบุชื่อของตัวแปรที่จะมีข้อความตอบกลับที่ได้รับจากบริการภายนอก ระบบจะกำหนดการตอบกลับจากเป้าหมายให้กับตัวแปรก็ต่อเมื่อนโยบายอ่านการตอบกลับทั้งหมดได้สำเร็จเท่านั้น หากการเรียกใช้ระยะไกล ล้มเหลวไม่ว่าด้วยเหตุผลใด นโยบายจะแสดงข้อผิดพลาด
หากละเว้นองค์ประกอบนี้ พร็อกซี API จะไม่รอการตอบกลับ และการดำเนินการโฟลว์ของพร็อกซี API
จะดำเนินการต่อด้วยขั้นตอนโฟลว์ที่ตามมา นอกจากนี้ เพื่อให้เห็นภาพชัดเจนยิ่งขึ้น หากไม่มีองค์ประกอบ Response ระบบจะประมวลผลการตอบกลับจากเป้าหมายในขั้นตอนต่อๆ ไปไม่ได้ และไม่มีวิธีใดที่พร็อกซีโฟลว์จะตรวจหาความล้มเหลวในการเรียกใช้ระยะไกลได้
การใช้งานทั่วไปสำหรับการละเว้นองค์ประกอบ Response เมื่อใช้ ServiceCallout คือการบันทึกข้อความไปยังระบบภายนอก
<Response>calloutResponse</Response>
| ค่าเริ่มต้น | NA |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | สตริง |
องค์ประกอบ <Timeout>
ระยะเวลาเป็นมิลลิวินาทีที่นโยบายการเรียกใช้บริการจะรอการตอบกลับจากเป้าหมาย คุณตั้งค่านี้แบบไดนามิกในขณะรันไทม์ไม่ได้ หากการเรียกใช้บริการหมดเวลา ระบบจะแสดง HTTP 500, นโยบายจะล้มเหลว และพร็อกซี API จะเข้าสู่สถานะข้อผิดพลาดตามที่อธิบายไว้ในการจัดการข้อผิดพลาด
<Timeout>30000</Timeout>
| ค่าเริ่มต้น | 55000 มิลลิวินาที (55 วินาที) ซึ่งเป็นการตั้งค่าการหมดเวลา HTTP เริ่มต้นสำหรับ Apigee Edge |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | จำนวนเต็ม |
องค์ประกอบ <HTTPTargetConnection>
ระบุรายละเอียดการรับส่ง เช่น URL, TLS/SSL และพร็อพเพอร์ตี้ HTTP ดู
<TargetEndpoint>ข้อมูลอ้างอิงการกำหนดค่า
<HTTPTargetConnection>
<URL>http://example.com</URL>
<LoadBalancer/>
<SSLInfo/>
<Properties/>
</HTTPTargetConnection>| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ต้องระบุ |
| ประเภท | ไม่มี |
องค์ประกอบ <HTTPTargetConnection>/<URL>
URL ของบริการที่กำลังเรียกใช้
<HTTPTargetConnection>
<URL>http://example.com</URL>
</HTTPTargetConnection>คุณระบุส่วนหนึ่งของ URL แบบไดนามิกได้โดยใช้ตัวแปร อย่างไรก็ตาม ส่วนโปรโตคอลของ URL, http:// ด้านล่างนี้ ระบุด้วยตัวแปรไม่ได้ ในตัวอย่างถัดไป คุณจะใช้ตัวแปรเพื่อระบุค่าของพารามิเตอร์การค้นหา
<URL>http://example.com/forecastrss?w=${request.header.woeid}</URL>
หรือตั้งค่าส่วนหนึ่งของเส้นทาง URL ด้วยตัวแปร
<URL>http://example.com/{request.resourcePath}?w=${request.header.woeid}</URL>หากต้องการใช้ตัวแปรเพื่อระบุโดเมนและพอร์ตของ URL ให้ใช้ตัวแปรหนึ่ง สำหรับโดเมนและพอร์ตเท่านั้น และใช้ตัวแปรที่ 2 สำหรับส่วนอื่นๆ ของ URL
<URL>http://{request.dom_port}/{request.resourcePath}</URL>| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ต้องระบุ |
| ประเภท | สตริง |
องค์ประกอบ <HTTPTargetConnection>/<SSLInfo>
การกำหนดค่า TLS/SSL สำหรับบริการแบ็กเอนด์ หากต้องการความช่วยเหลือเกี่ยวกับการกำหนดค่า TLS/SSL โปรดดู การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (Cloud และ Private Cloud) และ "การกำหนดค่า TargetEndpoint ของ TLS/SSL" ในข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API
<HTTPTargetConnection>
<URL>https://example.com</URL>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>true</ClientAuthEnabled>
<KeyStore>ref://mykeystoreref</KeyStore> ## Use of a reference is recommended
<KeyAlias>myKey</KeyAlias>
<TrustStore>myTruststore</TrustStore>
<Ciphers/>
<Protocols/>
</SSLInfo>
</HTTPTargetConnection>| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | ไม่มี |
องค์ประกอบ <HTTPTargetConnection>/<Properties>
พร็อพเพอร์ตี้การรับส่งข้อมูล HTTP ไปยังบริการแบ็กเอนด์ ดูข้อมูลเพิ่มเติมได้ที่ ข้อมูลอ้างอิงเกี่ยวกับพร็อพเพอร์ตี้ของอุปกรณ์ปลายทาง
<HTTPTargetConnection>
<URL>http://example.com</URL>
<Properties>
<Property name="allow.http10">true</Property>
<Property name="request.retain.headers">
User-Agent,Referer,Accept-Language
</Property>
</Properties>
</HTTPTargetConnection>| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | ไม่มี |
องค์ประกอบ <HTTPTargetConnection>/<LoadBalancer>
เรียกเซิร์ฟเวอร์เป้าหมายอย่างน้อย 1 เครื่องและทำการปรับสมดุลโหลดในเซิร์ฟเวอร์เหล่านั้น ดูตัวอย่างเรียกเซิร์ฟเวอร์ เป้าหมายในส่วนตัวอย่าง ดูการจัดสรรภาระงานในเซิร์ฟเวอร์แบ็กเอนด์ด้วย โปรดดูโพสต์ในชุมชนนี้ซึ่งอธิบายวิธีเรียกเซิร์ฟเวอร์เป้าหมายจากทั้งนโยบาย Service Callout และ การใช้กฎเส้นทางด้วย
<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | ไม่มี |
องค์ประกอบ <LocalTargetConnection>
ระบุพร็อกซีภายใน ซึ่งก็คือพร็อกซีในองค์กรและสภาพแวดล้อมเดียวกัน เป็นเป้าหมายของ Callout ของบริการ
หากต้องการระบุเป้าหมายเพิ่มเติม ให้ใช้องค์ประกอบ <APIProxy> และ <ProxyEndpoint> หรือองค์ประกอบ <Path>
<LocalTargetConnection> <APIProxy/> <ProxyEndpoint/> <Path/> </LocalTargetConnection>
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ต้องระบุ |
| ประเภท | ไม่มี |
องค์ประกอบ <LocalTargetConnection>/<APIProxy>
ชื่อของพร็อกซี API ที่เป็นเป้าหมายของการเรียกในเครื่อง พร็อกซีต้องอยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับพร็อกซีที่ทำการเรียก
<LocalTargetConnection> <APIProxy>data-manager</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
นอกจากองค์ประกอบ <APIProxy> แล้ว ให้ใส่องค์ประกอบ
<ProxyEndpoint> เพื่อระบุชื่อของปลายทางพร็อกซีที่ควร
กำหนดเป้าหมายสำหรับการโทร
<LocalTargetConnection> <APIProxy/> <ProxyEndpoint/> </LocalTargetConnection>
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ต้องระบุ |
| ประเภท | สตริง |
องค์ประกอบ <LocalTargetConnection>/<ProxyEndpoint>
ชื่อของปลายทางพร็อกซีที่ควรเป็นเป้าหมายของการเรียก นี่คือปลายทางพร็อกซีใน
พร็อกซี API ที่ระบุด้วยองค์ประกอบ <APIProxy>
<LocalTargetConnection> <APIProxy>data-manager</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | ไม่มี |
องค์ประกอบ <LocalTargetConnection>/<Path>
เส้นทางไปยังปลายทางที่กำหนดเป้าหมาย ปลายทางต้องอ้างอิงถึงพร็อกซีในองค์กรและสภาพแวดล้อมเดียวกันกับพร็อกซีที่ทำการเรียก
ใช้ตัวแปรนี้แทนคู่ <APIProxy>/<ProxyEndpoint> เมื่อคุณไม่ทราบหรือไม่สามารถใช้ชื่อพร็อกซีได้ เส้นทางอาจเป็นเป้าหมายที่เชื่อถือได้
<LocalTargetConnection> <Path>/data-manager</Path> </LocalTargetConnection>
| ค่าเริ่มต้น | ไม่มี |
| การตรวจหาบุคคลในบ้าน | ไม่บังคับ |
| ประเภท | ไม่มี |
สคีมา
ตัวแปรโฟลว์
ตัวแปรโฟลว์ช่วยให้เกิดลักษณะการทำงานแบบไดนามิกของนโยบายและโฟลว์ในขณะรันไทม์ โดยอิงตามส่วนหัว HTTP เนื้อหาข้อความ หรือบริบทโฟลว์ ตัวแปร Flow ที่กำหนดไว้ล่วงหน้าต่อไปนี้จะพร้อมใช้งาน หลังจากที่นโยบาย Service Callout ทำงาน ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรโฟลว์ได้ที่ข้อมูลอ้างอิงตัวแปร
การเรียกใช้บริการมีคำขอและการตอบกลับของตัวเอง และคุณสามารถเข้าถึงข้อมูลดังกล่าวผ่านตัวแปรได้
เนื่องจากข้อความหลักใช้คำนำหน้าตัวแปร request.* และ
response.* ให้ใช้คำนำหน้า myrequest.* และ
calloutResponse.* (ค่าเริ่มต้นในการกำหนดค่าข้อความไฮไลต์บริการ) เพื่อ
รับข้อมูลข้อความที่เฉพาะเจาะจงสำหรับข้อความไฮไลต์บริการ ตัวอย่างแรกในตารางต่อไปนี้แสดงวิธีรับส่วนหัว HTTP ในการเรียกใช้บริการ
| ตัวแปร | คำอธิบาย |
|---|---|
|
ต่อไปนี้เป็นตัวอย่างการรับส่วนหัวของคำขอและการตอบกลับของข้อความไฮไลต์บริการ ซึ่งคล้ายกับวิธีรับส่วนหัวจากคำขอและการตอบกลับหลัก
โดย calloutResponse คือชื่อตัวแปรสำหรับการตอบกลับใน Service Callout และ myRequest คือชื่อตัวแปรสำหรับคำขอ เช่น
แสดงผลส่วนหัว Content-Length ของการตอบกลับการเรียกใช้บริการ |
ขอบเขต: จากข้อความไฮไลต์ของบริการเป็นต้นไป ส่วนหัวของข้อความในคำขอหรือการตอบกลับของข้อความไฮไลต์บริการ ตัวอย่างเช่น หากเป้าหมายพร็อกซี API คือ http://example.com และเป้าหมายการเรียกใช้บริการคือ http://mocktarget.apigee.net ตัวแปรเหล่านี้จะเป็นส่วนหัวสำหรับการเรียกไปยัง http://mocktarget.apigee.net |
servicecallout.requesturi |
ขอบเขต: จากคำขอข้อความไฮไลต์ของบริการเป็นต้นไป URI ของ TargetEndpoint สำหรับนโยบาย ServiceCallout URI คือ URL ของ TargetEndpoint ที่ไม่มีการระบุโปรโตคอลและโดเมน |
servicecallout.{policy-name}.target.url |
ขอบเขต: จากคำขอข้อความไฮไลต์ของบริการเป็นต้นไป URL เป้าหมายสำหรับข้อความไฮไลต์บริการ |
|
โดย |
ขอบเขต: จากการตอบกลับข้อความไฮไลต์ของบริการเป็นต้นไป เนื้อหาการตอบกลับจาก Service Callout |
servicecallout.{policy-name}.expectedcn |
ขอบเขต: จากคำขอข้อความไฮไลต์ของบริการเป็นต้นไป ชื่อสามัญที่คาดไว้ของ TargetEndpoint ตามที่อ้างอิงในนโยบาย ServiceCallout ซึ่งจะมีประโยชน์เฉพาะเมื่อ TargetEndpoint อ้างอิงถึงปลายทาง TLS/SSL เท่านั้น |
servicecallout.{policy-name}.failed |
ขอบเขต: จากการตอบกลับของข้อความแจ้งบริการเป็นต้นไป บูลีนที่ระบุว่านโยบายสำเร็จ (false) หรือไม่สำเร็จ (true) |
ข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
| รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
|---|---|---|---|
steps.servicecallout.ExecutionFailed |
500 |
ข้อผิดพลาดนี้อาจเกิดขึ้นในกรณีต่อไปนี้
|
build |
steps.servicecallout.RequestVariableNotMessageType |
500 | ตัวแปรคำขอที่ระบุในนโยบายไม่ใช่ประเภท "ข้อความ" ตัวอย่างเช่น หาก เป็นสตริงหรือประเภทที่ไม่ใช่ข้อความ คุณจะเห็นข้อผิดพลาดนี้ | build |
steps.servicecallout.RequestVariableNotRequestMessageType |
500 | ตัวแปรคำขอที่ระบุในนโยบายไม่ใช่ประเภท "ข้อความคำขอ" สำหรับ เช่น ถ้าเป็นประเภทการตอบกลับ คุณจะเห็นข้อผิดพลาดนี้ | build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
| ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
|---|---|---|
URLMissing |
องค์ประกอบ <URL> ภายใน <HTTPTargetConnection>
ไม่มีหรือว่างเปล่า |
build |
ConnectionInfoMissing |
ข้อผิดพลาดนี้เกิดขึ้นหากนโยบายไม่มี
<HTTPTargetConnection> หรือ <LocalTargetConnection>
|
build |
InvalidTimeoutValue |
ข้อผิดพลาดนี้เกิดขึ้นหากค่า <Timeout> เป็นลบหรือ 0 |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name = "RequestVariableNotMessageType" |
servicecallout.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | servicecallout.SC-GetUserData.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault":{ "detail":{ "errorcode":"steps.servicecallout.RequestVariableNotMessageType" }, "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: request variable data_str value is not of type Message" } }
ตัวอย่างกฎข้อผิดพลาด
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
<Step>
<Name>AM-RequestVariableNotMessageType</Name>
</Step>
<Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>หัวข้อที่เกี่ยวข้อง
- สร้างหรือแก้ไขข้อความ: กำหนดนโยบายข้อความ
- ดึงตัวแปร: Extract Variables policy
- ตัวแปร: ตัวแปร อ้างอิง
- การกำหนดค่า TLS/SSL
- การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (Cloud และ Private Cloud)
- "การกำหนดค่า TLS/SSL TargetEndpoint" ในข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API
- พร็อพเพอร์ตี้การรับส่ง HTTP: การอ้างอิงพร็อพเพอร์ตี้ของปลายทาง
- ทางเลือกแทนข้อความไฮไลต์ของบริการ: HTTPClient ที่เขียนด้วย JavaScript ดูรูปแบบออบเจ็กต์ JavaScript