คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
นโยบายข้อความไฮไลต์บริการช่วยให้คุณโทรหาบริการอื่นจากขั้นตอนของพร็อกซี API ได้ คุณ สามารถสร้างข้อความไฮไลต์ไปยังบริการภายนอก (เช่น ปลายทางบริการ RESTful ภายนอก) หรือ บริการภายใน (เช่น พร็อกซี API ในองค์กรและสภาพแวดล้อมเดียวกัน)
- ในกรณีการใช้งานภายนอก คุณจะส่งคำขอไปยัง API ของบุคคลที่สามที่อยู่ภายนอก พร็อกซี การตอบกลับจาก API บุคคลที่สามจะได้รับการแยกวิเคราะห์และแทรกในการตอบสนองของ API ของคุณ ข้อความ คุณค่าเพิ่มเติม และ "การผสมข้อมูล" ข้อมูลสำหรับผู้ใช้ปลายทางแอป นอกจากนี้ คุณยังส่งคำขอ โดยใช้นโยบายคำขอราคาเสนอบริการในขั้นตอนคำขอ แล้วส่งข้อมูลในคำตอบ ไปยัง TargetEndpoint ของพร็อกซี API
- ในอีกกรณีหนึ่ง คุณจะเรียกใช้พร็อกซีที่อยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับ ที่อยู่ปลายทาง ตัวอย่างเช่น คุณอาจพบว่ามีประโยชน์เมื่อมีพร็อกซีที่ มีฟังก์ชันการทำงานระดับต่ำบางอย่างซึ่งพร็อกซีอื่นอย่างน้อย 1 รายการจะต้องใช้ สำหรับ ตัวอย่างเช่น พร็อกซีที่แสดงการดำเนินการสร้าง/อ่าน/อัปเดต/ลบด้วยที่เก็บข้อมูลแบ็กเอนด์ อาจเป็นพร็อกซีเป้าหมายสำหรับพร็อกซีอื่นๆ อีกหลายรายการที่เปิดเผยข้อมูลแก่ไคลเอ็นต์
นโยบายรองรับคำขอผ่าน HTTP และ HTTPS
ลองฟัง
การโทรไปยังพร็อกซีภายในภายใน
<LocalTargetConnection> <APIProxy>data-manager</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
ตัวอย่างนี้สร้างข้อความไฮไลต์ไปยังพร็อกซี API ในเครื่อง (กล่าวคือ 1 รายการในองค์กรเดียวกัน
และสภาพแวดล้อม) ที่เรียกว่า 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
แทนที่จะใช้นโยบาย เช่น กำหนดข้อความ เพื่อสร้างออบเจ็กต์คำขอ คุณสามารถ ระบุไว้ในนโยบายคำขอราคาเสนอบริการโดยตรง ในตัวอย่างนี้ นโยบายการเรียกบริการ ตั้งค่าพารามิเตอร์การค้นหา 3 รายการที่ส่งไปยังบริการภายนอก คุณสามารถสร้าง ข้อความคำขอทั้งหมดในนโยบายคำขอราคาเสนอบริการที่ระบุเพย์โหลด ประเภทการเข้ารหัส เช่น 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 ที่ พร้อมสำหรับการแยกวิเคราะห์โดยนโยบายการแยกตัวแปร หรือโดยโค้ดที่กำหนดเองที่เขียนด้วย JavaScript หรือ Java นโยบายจะรอการตอบกลับจาก Google Geocoding API เป็นเวลา 30 วินาทีก่อน หมดเวลา
สำหรับตัวอย่างพร็อกซี API ที่สมบูรณ์ที่ใช้ไฮไลต์บริการตัวอย่างนี้ พร้อมทั้ง นโยบายการกำหนดข้อความและการดึงข้อมูลตัวแปร โปรดดูการใช้นโยบาย การเรียบเรียงเพลง
เรียกใช้เซิร์ฟเวอร์เป้าหมาย
<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" สำหรับข้อมูลเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์เป้าหมายสำหรับพร็อกซีและการกำหนดค่า สำหรับการจัดสรรภาระงาน โปรดดูการจัดสรรภาระงานใน เซิร์ฟเวอร์แบ็กเอนด์
เกี่ยวกับนโยบายข้อความไฮไลต์บริการ
คุณสามารถใช้นโยบายข้อความไฮไลต์บริการในพร็อกซี API ได้ในหลายสถานการณ์ สำหรับ เช่น คุณสามารถกำหนดค่าพร็อกซี API เพื่อให้เรียกใช้บริการภายนอกเพื่อนำส่ง ข้อมูลตำแหน่งทางภูมิศาสตร์ รีวิวจากลูกค้า สินค้าจากแคตตาล็อกค้าปลีกของพาร์ทเนอร์ และอื่นๆ
ข้อความเสริมมักจะใช้กับนโยบายอื่นอีก 2 นโยบาย ได้แก่ กำหนดข้อความและตัวแปรดึงข้อมูล
- คําขอ: ตัวเลือก "กําหนดข้อความ" จะสร้างข้อความคําขอที่ส่งไปยังรีโมต service.
-
การตอบสนอง: ตัวแปรการดึงข้อมูลจะแยกวิเคราะห์การตอบกลับและแยกข้อมูลเฉพาะ เนื้อหา
องค์ประกอบโดยทั่วไปของนโยบายคำขอราคาเสนอบริการจะเกี่ยวข้องกับสิ่งต่อไปนี้
- มอบหมายข้อความ นโยบาย: สร้างข้อความคำขอ ป้อนข้อมูลส่วนหัว HTTP พารามิเตอร์การค้นหา ตั้งค่า HTTP กริยา เป็นต้น
- นโยบายข้อความไฮไลต์บริการ: อ้างอิงข้อความที่สร้างโดยข้อความมอบหมาย
นโยบาย จะกำหนด URL เป้าหมายสำหรับการเรียกภายนอก และตั้งชื่อให้ออบเจ็กต์การตอบกลับ
ที่บริการเป้าหมายแสดงผล
หากต้องการปรับปรุงประสิทธิภาพ คุณสามารถแคชการตอบกลับข้อความไฮไลต์บริการ ตามที่อธิบายไว้ใน ชุดข้อความของชุมชน Apigee: https://community.apigee.com/questions/34110/how-can-i-store-the-results-of-the-servicecallout.html - ตัวแปรการดึงข้อมูล นโยบาย: ปกติแล้วจะกำหนดนิพจน์ JSONPath หรือ XPath ที่แยกวิเคราะห์ข้อความที่สร้างขึ้น ข้างข้อความไฮไลต์บริการ จากนั้นนโยบายจะกำหนดตัวแปรที่มีค่าที่แยกวิเคราะห์จาก การตอบกลับข้อความไฮไลต์บริการ
ดูนโยบายการใช้งาน การเรียบเรียงของพร็อกซี API ตัวอย่างที่สมบูรณ์ที่ใช้นโยบายไฮไลต์บริการร่วมกับ นโยบาย "กำหนดข้อความและดึงตัวแปร"
การจัดการข้อผิดพลาดที่กำหนดเอง
การอ้างอิงองค์ประกอบ
ต่อไปนี้คือองค์ประกอบและแอตทริบิวต์ที่คุณสามารถกำหนดค่าในนโยบายนี้
<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> จะเหมือนกับสำหรับแท็ก มอบหมายข้อความ นโยบาย
นโยบายจะแสดงข้อผิดพลาดหากข้อความคำขอแก้ไขไม่ได้หรือเป็นข้อความที่ไม่ถูกต้อง ประเภทข้อความคำขอ
ในตัวอย่างที่ง่ายที่สุด คุณจะต้องส่งตัวแปรที่มีข้อความคำขอที่มีการป้อนข้อมูล ในขั้นตอนของพร็อกซี API ได้เร็วขึ้น
<Request clearPayload="true" variable="myRequest"/>
หรือคุณจะเติมข้อมูลคำขอที่ส่งไปยังบริการภายนอกไว้ในนโยบายคำขอราคาเสนอบริการเองก็ได้
<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 ให้เป็น "เท็จ" เฉพาะในกรณีที่ต้องระบุข้อความในคำขอหลังจากข้อความไฮไลต์บริการ ดำเนินการแล้ว |
จริง | ไม่บังคับ |
<Request>/<IgnoreUnresolvedVariables> องค์ประกอบ
เมื่อตั้งค่าเป็น true นโยบาย ไม่สนใจข้อผิดพลาดเกี่ยวกับตัวแปรที่ยังไม่ได้แก้ไขในคำขอ
<Request clearPayload="true" variable="myRequest"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </Request>
ค่าเริ่มต้น | เท็จ |
การตรวจหาบุคคล | ไม่บังคับ |
ประเภท | บูลีน |
<Response> องค์ประกอบ
รวมองค์ประกอบนี้เมื่อตรรกะของพร็อกซี API ต้องการการตอบกลับจากการเรียกใช้จากระยะไกลสำหรับ เพื่อประมวลผลต่อไป
เมื่อมีองค์ประกอบนี้อยู่ องค์ประกอบจะระบุชื่อของตัวแปรที่จะมีฟิลด์ ข้อความตอบกลับที่ได้รับจากบริการภายนอก กำหนดการตอบสนองจากเป้าหมายให้กับ ตัวแปรก็ต่อเมื่อนโยบายอ่านคำตอบทั้งหมดได้สำเร็จเท่านั้น หากการเรียกใช้จากระยะไกล ล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม นโยบายจะแสดงข้อผิดพลาด
หากละเว้นองค์ประกอบนี้ พร็อกซี API จะไม่รอการตอบกลับ ขั้นตอนของพร็อกซี API
จะดำเนินการต่อไปพร้อมกับขั้นตอนต่อๆ มา นอกจากนี้ เพื่อระบุสิ่งที่ชัดเจน ซึ่งไม่มี
องค์ประกอบ Response
ไม่สามารถประมวลผลการตอบสนองจากเป้าหมายได้โดย
ขั้นตอนต่อๆ มา และไม่มีวิธีที่ทำให้โฟลว์พร็อกซีตรวจพบความล้มเหลวในการเรียกใช้จากระยะไกล
การใช้งานทั่วไปในการละเว้นองค์ประกอบ Response
เมื่อใช้ Serviceข้อความไฮไลต์: เพื่อบันทึก
ข้อความไปยังระบบภายนอก
<Response>calloutResponse</Response>
ค่าเริ่มต้น | NA |
การตรวจหาบุคคล | ไม่บังคับ |
ประเภท | สตริง |
<ระยะหมดเวลา> องค์ประกอบ
เวลาเป็นมิลลิวินาทีที่นโยบายคำขอราคาเสนอบริการจะรอการตอบกลับจาก เป้าหมาย คุณตั้งค่านี้แบบไดนามิกขณะรันไทม์ไม่ได้ หากคำขอราคาเสนอบริการถึงระยะหมดเวลา มีการส่งคืน HTTP 500, นโยบายล้มเหลว และพร็อกซี API จะอยู่ในสถานะข้อผิดพลาด เช่น ที่อธิบายไว้ในการจัดการข้อผิดพลาด
<Timeout>30000</Timeout>
ค่าเริ่มต้น | 55,000 มิลลิวินาที (55 วินาที) ซึ่งเป็นการตั้งค่าระยะหมดเวลา HTTP เริ่มต้นสำหรับ Apigee ขอบ |
การตรวจหาบุคคล | ไม่บังคับ |
ประเภท | จำนวนเต็ม |
<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) และ "การกำหนดค่า TLS/SSL TargetEndpoint" ในข้อมูลอ้างอิงการกำหนดค่าพร็อกซี 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 เซิร์ฟเวอร์และจัดสรรภาระงานในเซิร์ฟเวอร์ดังกล่าว ดูเป้าหมายการโทร เซิร์ฟเวอร์ตัวอย่างในส่วนตัวอย่าง ดูข้อมูลเพิ่มเติมที่การจัดสรรภาระงานในแบ็กเอนด์ เซิร์ฟเวอร์ ดูชุมชนนี้เพิ่มเติม โพสต์ที่กล่าวถึงวิธีเรียกใช้เซิร์ฟเวอร์เป้าหมายจากทั้งนโยบายคำขอราคาเสนอบริการและ โดยใช้กฎเส้นทาง
<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
ค่าเริ่มต้น | ไม่มี |
การตรวจหาบุคคล | ไม่บังคับ |
ประเภท | ไม่เกี่ยวข้อง |
<LocalTargetConnection> องค์ประกอบ
ระบุพร็อกซีภายใน ซึ่งก็คือพร็อกซีในองค์กรและสภาพแวดล้อมเดียวกัน เป็น ของไฮไลต์บริการ
หากต้องการระบุเป้าหมายเพิ่มเติม ให้ใช้องค์ประกอบ <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 ส่วนหัว เนื้อหาข้อความ หรือบริบทโฟลว์ได้ ตัวแปรโฟลว์ที่กำหนดไว้ล่วงหน้าต่อไปนี้พร้อมให้ใช้งานแล้ว หลังจากที่นโยบายคำขอราคาเสนอบริการทำงาน ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรโฟลว์ได้ที่ข้อมูลอ้างอิงตัวแปร
ข้อความไฮไลต์บริการจะมีคำขอและการตอบกลับของตนเอง คุณจะเข้าถึงข้อมูลดังกล่าวได้ผ่าน
ตัวแปร เนื่องจากข้อความหลักใช้ request.*
และ
คำนำหน้าตัวแปร response.*
รายการ ให้ใช้ myrequest.*
และ
calloutResponse.*
นำหน้า (ค่าเริ่มต้นในการกำหนดค่าการเรียกบริการ) เป็น
ดูข้อมูลข้อความสำหรับข้อความไฮไลต์บริการโดยเฉพาะ ตัวอย่างแรกในตารางต่อไปนี้แสดง
วิธีรับส่วนหัว HTTP ในข้อความไฮไลต์บริการ
ตัวแปร | คำอธิบาย |
---|---|
ต่อไปนี้เป็นตัวอย่างการรับคำขอราคาเสนอบริการและส่วนหัวการตอบกลับ คล้ายกับวิธีที่คุณรับส่วนหัวจากคำขอและการตอบกลับหลักและ
โดยที่ calloutResponse เป็นชื่อตัวแปรสําหรับการตอบกลับในบริการ ข้อความไฮไลต์ และ myRequest เป็นชื่อตัวแปรสำหรับคำขอ เช่น
แสดงผลส่วนหัว Content-Length ของการตอบกลับคำขอราคาเสนอบริการ |
ขอบเขต: จากการส่งต่อคำขอราคาเสนอบริการ ส่วนหัวของข้อความในคําขอข้อความไฮไลต์บริการหรือการตอบกลับ ตัวอย่างเช่น หาก API เป้าหมายพร็อกซีคือ http://example.com และเป้าหมายคำขอราคาเสนอบริการคือ http://mocktarget.apigee.net ตัวแปรเหล่านี้คือ ส่วนหัวของข้อความที่ขอ http://mocktarget.apigee.net. |
servicecallout.requesturi |
ขอบเขต: จากคำขอคำขอราคาเสนอบริการเป็นต้นไป URI ของ TargetEndpoint สำหรับนโยบาย Serviceข้อความเสริม URI คือ URL ของ TargetEndpoint โดยไม่มีข้อกำหนดโปรโตคอลและโดเมน |
servicecallout.{policy-name}.target.url |
ขอบเขต: จากคำขอคำขอราคาเสนอบริการเป็นต้นไป URL เป้าหมายสำหรับข้อความไฮไลต์บริการ |
โดยที่ |
ขอบเขต: จากการตอบกลับคำขอราคาเสนอบริการเป็นต้นไป เนื้อหาการตอบกลับจากข้อความไฮไลต์บริการ |
servicecallout.{policy-name}.expectedcn |
ขอบเขต: จากคำขอคำขอราคาเสนอบริการเป็นต้นไป ชื่อทั่วไปที่คาดไว้ของ TargetEndpoint ตามที่อ้างอิงใน Serviceคำขอราคาเสนอ ซึ่งจะมีความหมายก็ต่อเมื่อ TargetEndpoint อ้างอิงถึง TLS/SSL เท่านั้น ปลายทาง |
servicecallout.{policy-name}.failed |
ขอบเขต: จากการตอบกลับคำขอราคาเสนอบริการเป็นต้นไป บูลีนที่ระบุว่านโยบายสำเร็จ เท็จ หรือล้มเหลว เป็น "จริง" |
ข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ 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>
หัวข้อที่เกี่ยวข้อง
- สร้างหรือแก้ไขข้อความ: กำหนดนโยบายข้อความ
- ดึงข้อมูลตัวแปร: ตัวแปรการดึงข้อมูล นโยบาย
- ตัวแปร: ตัวแปร ข้อมูลอ้างอิง
- การกำหนดค่า TLS/SSL
- การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (ระบบคลาวด์และ Private Cloud)
- "การกำหนดค่า TLS/SSL TargetEndpoint" ในข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API
- พร็อพเพอร์ตี้การรับส่ง HTTP: ข้อมูลอ้างอิงพร็อพเพอร์ตี้ปลายทาง
- ทางเลือกที่ใช้แทนคำขอราคาเสนอบริการ: HTTPClient ที่เขียนด้วย JavaScript โปรดดู โมเดลออบเจ็กต์ JavaScript