คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
อะไร
นโยบายคำขอราคาเสนอบริการช่วยให้คุณเรียกใช้บริการอื่นจากขั้นตอนพร็อกซี API ได้ คุณจะสร้างไฮไลต์ไปยังบริการภายนอก (เช่น ปลายทางบริการ RESTful ภายนอก) หรือบริการภายใน (เช่น พร็อกซี API ในองค์กรและสภาพแวดล้อมเดียวกัน) ได้
- ใน Use Case ภายนอก คุณสร้างไฮไลต์ไปยัง 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
แทนที่จะใช้นโยบาย เช่น มอบหมายข้อความ เพื่อสร้างออบเจ็กต์คำขอ คุณจะกำหนดในนโยบายคำขอราคาเสนอบริการได้โดยตรง ในตัวอย่างนี้ นโยบายคำขอราคาเสนอบริการตั้งค่าของพารามิเตอร์การค้นหา 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 นโยบายจะรอ 30 วินาทีเพื่อรับการตอบสนองจาก Google Geocoding API ก่อนที่จะหมดเวลา
สำหรับพร็อกซี 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 นโยบาย คือ กำหนดข้อความและแยกตัวแปร
- คำขอ: การมอบหมายข้อความจะเติมข้อมูลข้อความคำขอที่ส่งไปยังบริการระยะไกล
-
การตอบกลับ: การแยกตัวแปรจะแยกวิเคราะห์การตอบกลับและแยกเนื้อหาที่เฉพาะเจาะจง
องค์ประกอบของนโยบายคำขอราคาเสนอบริการโดยทั่วไปประกอบด้วยส่วนต่างๆ ต่อไปนี้
- กำหนดนโยบายข้อความ: สร้างข้อความคำขอ, ป้อนข้อมูลส่วนหัว 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>
แอตทริบิวต์ <Service callout>
<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">
ตารางต่อไปนี้อธิบายแอตทริบิวต์ที่ใช้ร่วมกันในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มีข้อมูล | จำเป็น |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
false | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
false | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มีข้อมูล หากคุณไม่ใส่องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
Type | สตริง |
อีลิเมนต์ <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>
ค่าเริ่มต้น | หากไม่มีองค์ประกอบคำขอหรือแอตทริบิวต์ใดๆ ในองค์ประกอบดังกล่าว Edge จะกำหนดค่าเริ่มต้นดังต่อไปนี้
<Request clearPayload="true" variable="servicecallout.request"/> มาดูความหมายของค่าเริ่มต้นเหล่านี้กัน อย่างแรก
คุณควรทราบเกี่ยวกับชื่อเริ่มต้นนี้หากคุณใช้การมาสก์ข้อมูล หากคุณไม่ใส่ชื่อตัวแปร คุณจะต้องเพิ่ม |
การปรากฏ | ไม่บังคับ |
ประเภท | ไม่มีข้อมูล |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ตัวแปร |
ชื่อของตัวแปรที่จะใส่ข้อความคำขอ |
servicecallout.request |
ไม่บังคับ |
clearPayload |
หากเป็น ตั้งค่าตัวเลือก clearPayload เป็น "เท็จ" เฉพาะในกรณีที่ต้องมีข้อความคำขอหลังจากที่เรียกใช้การเรียกบริการ |
จริง | ไม่บังคับ |
องค์ประกอบ <Request>/< ignoreUnresolvedVariables>
เมื่อตั้งค่าเป็น true นโยบายจะไม่สนใจข้อผิดพลาดของตัวแปรที่ยังไม่ได้แก้ไขในคำขอ
<Request clearPayload="true" variable="myRequest"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </Request>
ค่าเริ่มต้น | false |
การปรากฏ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบ <Response>
รวมองค์ประกอบนี้เมื่อตรรกะพร็อกซี API ต้องการการตอบสนองจากการเรียกใช้ระยะไกลเพื่อการประมวลผลเพิ่มเติม
เมื่อมีองค์ประกอบนี้ องค์ประกอบดังกล่าวจะระบุชื่อของตัวแปรที่จะใส่ข้อความตอบกลับที่ได้รับจากบริการภายนอก การตอบสนองจากเป้าหมายจะกำหนดให้กับตัวแปรต่อเมื่อนโยบายอ่านการตอบสนองทั้งหมดได้สำเร็จ หากเรียกใช้จากระยะไกลไม่สำเร็จไม่ว่าด้วยเหตุผลใดก็ตาม นโยบายจะแสดงข้อผิดพลาด
หากละเว้นองค์ประกอบนี้ พร็อกซี API จะไม่รอการตอบสนอง การดำเนินการโฟลว์ของพร็อกซี API จะดำเนินต่อไปในขั้นตอนโฟลว์ที่ตามมา นอกจากนี้ หากต้องการระบุสิ่งที่ชัดเจนเมื่อไม่มีองค์ประกอบ Response
การตอบสนองจากเป้าหมายจะไม่พร้อมสำหรับการประมวลผลในขั้นตอนต่อๆ มา และโฟลว์พร็อกซีก็จะตรวจจับความล้มเหลวในการเรียกใช้ระยะไกลไม่ได้
การใช้งานทั่วไปสำหรับการละเว้นองค์ประกอบ Response
เมื่อใช้ ServiceAPI เพื่อบันทึกข้อความไปยังระบบภายนอก
<Response>calloutResponse</Response>
ค่าเริ่มต้น | ไม่มี |
การปรากฏ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบ <Timeout>
เวลาเป็นมิลลิวินาทีที่นโยบายคำขอราคาเสนอบริการจะรอการตอบสนองจากเป้าหมาย คุณตั้งค่านี้แบบไดนามิกขณะรันไทม์ไม่ได้ หากคำขอราคาเสนอบริการถึงระยะหมดเวลา ระบบจะส่ง HTTP 500 กลับมา นโยบายจะล้มเหลว และพร็อกซี API จะอยู่ในสถานะข้อผิดพลาดตามที่อธิบายไว้ในการจัดการข้อผิดพลาด
<Timeout>30000</Timeout>
ค่าเริ่มต้น | 55,000 มิลลิวินาที (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 ให้ใช้ตัวแปร 1 รายการสำหรับโดเมนและพอร์ตเท่านั้น และใช้ตัวแปรที่ 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 เป็นชื่อตัวแปรสําหรับคําขอ เช่น
จะแสดงส่วนหัวความยาวเนื้อหาของการตอบกลับคำขอราคาเสนอบริการ |
ขอบเขต: จากการส่งต่อคำขอราคาเสนอบริการ ส่วนหัวของข้อความในคำขอการเรียกบริการหรือการตอบกลับ เช่น หากเป้าหมายพร็อกซี API คือ http://example.com และเป้าหมายการเรียกบริการคือ http://mocktarget.apigee.net ตัวแปรเหล่านี้จะเป็นส่วนหัวของไฮไลต์สำหรับ http://mocktarget.apigee.net |
servicecallout.requesturi |
ขอบเขต: จากการส่งต่อคําขอคำขอราคาเสนอบริการไปข้างหน้า URI TargetEndpoint สำหรับนโยบาย ServiceAPI URI คือ URL ของ TargetEndpoint ที่ไม่มีโปรโตคอลและโดเมน |
servicecallout.{policy-name}.target.url |
ขอบเขต: จากการส่งต่อคําขอคำขอราคาเสนอบริการไปข้างหน้า URL เป้าหมายสำหรับคำขอราคาเสนอบริการ |
โดยที่ |
ขอบเขต: จากการตอบกลับคำขอราคาเสนอบริการต่อไป เนื้อหาการตอบสนองจากคำขอราคาเสนอบริการ |
servicecallout.{policy-name}.expectedcn |
ขอบเขต: จากการส่งต่อคําขอคำขอราคาเสนอบริการไปข้างหน้า ชื่อทั่วไปที่คาดไว้ของ TargetEndpoint ตามที่ระบุไว้ในนโยบาย ServiceGCDS ซึ่งจะมีความหมายก็ต่อเมื่อ 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 ไปยังแบ็กเอนด์ (Cloud และ Private Cloud)
- "TLS/SSL TargetEnd Configuration" ในข้อมูลอ้างอิงการกำหนดค่าพร็อกซี API
- พร็อพเพอร์ตี้การส่ง HTTP: การอ้างอิงพร็อพเพอร์ตี้ปลายทาง
- ทางเลือกนอกเหนือจากการเรียกบริการ: HTTPClient ที่เขียนด้วย JavaScript โปรดดูโมเดลออบเจ็กต์ JavaScript