นโยบายคําขอราคาเสนอบริการ

คุณกำลังดูเอกสารประกอบ 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.
  • การตอบสนอง: ตัวแปรการดึงข้อมูลจะแยกวิเคราะห์การตอบกลับและแยกข้อมูลเฉพาะ เนื้อหา

องค์ประกอบโดยทั่วไปของนโยบายคำขอราคาเสนอบริการจะเกี่ยวข้องกับสิ่งต่อไปนี้

  1. มอบหมายข้อความ นโยบาย: สร้างข้อความคำขอ ป้อนข้อมูลส่วนหัว HTTP พารามิเตอร์การค้นหา ตั้งค่า HTTP กริยา เป็นต้น
  2. นโยบายข้อความไฮไลต์บริการ: อ้างอิงข้อความที่สร้างโดยข้อความมอบหมาย นโยบาย จะกำหนด URL เป้าหมายสำหรับการเรียกภายนอก และตั้งชื่อให้ออบเจ็กต์การตอบกลับ ที่บริการเป้าหมายแสดงผล

    หากต้องการปรับปรุงประสิทธิภาพ คุณสามารถแคชการตอบกลับข้อความไฮไลต์บริการ ตามที่อธิบายไว้ใน ชุดข้อความของชุมชน Apigee: https://community.apigee.com/questions/34110/how-can-i-store-the-results-of-the-servicecallout.html
  3. ตัวแปรการดึงข้อมูล นโยบาย: ปกติแล้วจะกำหนดนิพจน์ 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>

&lt;ServiceCallout&gt; แอตทริบิวต์

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">

ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
name

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name สามารถ ประกอบด้วยตัวอักษร ตัวเลข การเว้นวรรค ขีดกลางสั้น ขีดล่าง และจุด ค่านี้ไม่สามารถ เกิน 255 อักขระ

(ไม่บังคับ) ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

ไม่มี ต้องระบุ
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว เป็นเรื่องปกติ พฤติกรรมสำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้ดำเนินการตามขั้นตอนได้อย่างต่อเนื่องแม้จะมีนโยบายแล้วก็ตาม ล้มเหลว

เท็จ ไม่บังคับ
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อปิดนโยบาย นโยบายจะไม่ บังคับใช้ แม้ว่าจะยังคงแนบกับขั้นตอน

จริง ไม่บังคับ
async

แอตทริบิวต์นี้เลิกใช้งานแล้ว

เท็จ เลิกใช้

&lt;DisplayName&gt; องค์ประกอบ

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น

ไม่มี

หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ name ของนโยบายจะเป็น

การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง

&lt;Request&gt; องค์ประกอบ

ระบุตัวแปรที่มีข้อความคำขอที่ส่งจากพร็อกซี 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 จะกำหนดแอตทริบิวต์ ค่าเริ่มต้นต่อไปนี้

&lt;Request clearPayload=&quot;true&quot; variable=&quot;servicecallout.request&quot;/&gt;

มาดูกันว่าค่าเริ่มต้นเหล่านี้หมายความว่าอย่างไร ประการแรก clearPayload=true หมายความว่า ออบเจ็กต์คำขอจะสร้างขึ้นทุกครั้งที่นโยบาย ServiceCall ทำงาน ซึ่งหมายความว่า จะไม่มีการใช้คำขอและเส้นทาง URI คำขอซ้ำเป็นอันขาด อย่างที่ 2 ตัวแปรเริ่มต้น ชื่อ servicecallout.request คือชื่อที่สงวนไว้ ที่กำหนดให้กับคำขอ หากคุณไม่ได้ระบุชื่อ

คุณต้องทราบเกี่ยวกับชื่อเริ่มต้นนี้หากคุณใช้การมาสก์ข้อมูล หากไม่ได้ระบุชื่อตัวแปร คุณต้องเพิ่ม servicecallout.request ในการกำหนดค่ามาสก์ ตัวอย่างเช่น ถ้าต้องการมาสก์ส่วนหัวการให้สิทธิ์เพื่อให้ไม่ปรากฏในเซสชันการติดตาม คุณจะต้องเพิ่มข้อมูลต่อไปนี้ลงในการกำหนดค่าการมาสก์เพื่อบันทึกชื่อเริ่มต้น

servicecallout.request.header.Authorization

การตรวจหาบุคคล ไม่บังคับ
ประเภท ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
ตัวแปร

ชื่อของตัวแปรที่จะมีข้อความคำขอ

servicecallout.request ไม่บังคับ
clearPayload

หากเป็น true ระบบจะล้างตัวแปรที่มีข้อความคำขอหลังเหตุการณ์ คำขอจะส่งไปยังเป้าหมาย HTTP เพื่อเพิ่มหน่วยความจำที่ใช้โดยข้อความคำขอ

ตั้งค่า clearPayload ให้เป็น "เท็จ" เฉพาะในกรณีที่ต้องระบุข้อความในคำขอหลังจากข้อความไฮไลต์บริการ ดำเนินการแล้ว

จริง ไม่บังคับ

&lt;Request&gt;/&lt;IgnoreUnresolvedVariables&gt; องค์ประกอบ

เมื่อตั้งค่าเป็น true นโยบาย ไม่สนใจข้อผิดพลาดเกี่ยวกับตัวแปรที่ยังไม่ได้แก้ไขในคำขอ

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request> 
ค่าเริ่มต้น เท็จ
การตรวจหาบุคคล ไม่บังคับ
ประเภท บูลีน

&lt;Response&gt; องค์ประกอบ

รวมองค์ประกอบนี้เมื่อตรรกะของพร็อกซี API ต้องการการตอบกลับจากการเรียกใช้จากระยะไกลสำหรับ เพื่อประมวลผลต่อไป

เมื่อมีองค์ประกอบนี้อยู่ องค์ประกอบจะระบุชื่อของตัวแปรที่จะมีฟิลด์ ข้อความตอบกลับที่ได้รับจากบริการภายนอก กำหนดการตอบสนองจากเป้าหมายให้กับ ตัวแปรก็ต่อเมื่อนโยบายอ่านคำตอบทั้งหมดได้สำเร็จเท่านั้น หากการเรียกใช้จากระยะไกล ล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม นโยบายจะแสดงข้อผิดพลาด

หากละเว้นองค์ประกอบนี้ พร็อกซี API จะไม่รอการตอบกลับ ขั้นตอนของพร็อกซี API จะดำเนินการต่อไปพร้อมกับขั้นตอนต่อๆ มา นอกจากนี้ เพื่อระบุสิ่งที่ชัดเจน ซึ่งไม่มี องค์ประกอบ Response ไม่สามารถประมวลผลการตอบสนองจากเป้าหมายได้โดย ขั้นตอนต่อๆ มา และไม่มีวิธีที่ทำให้โฟลว์พร็อกซีตรวจพบความล้มเหลวในการเรียกใช้จากระยะไกล การใช้งานทั่วไปในการละเว้นองค์ประกอบ Response เมื่อใช้ Serviceข้อความไฮไลต์: เพื่อบันทึก ข้อความไปยังระบบภายนอก

 <Response>calloutResponse</Response> 
ค่าเริ่มต้น NA
การตรวจหาบุคคล ไม่บังคับ
ประเภท สตริง

<ระยะหมดเวลา> องค์ประกอบ

เวลาเป็นมิลลิวินาทีที่นโยบายคำขอราคาเสนอบริการจะรอการตอบกลับจาก เป้าหมาย คุณตั้งค่านี้แบบไดนามิกขณะรันไทม์ไม่ได้ หากคำขอราคาเสนอบริการถึงระยะหมดเวลา มีการส่งคืน HTTP 500, นโยบายล้มเหลว และพร็อกซี API จะอยู่ในสถานะข้อผิดพลาด เช่น ที่อธิบายไว้ในการจัดการข้อผิดพลาด

<Timeout>30000</Timeout>
ค่าเริ่มต้น 55,000 มิลลิวินาที (55 วินาที) ซึ่งเป็นการตั้งค่าระยะหมดเวลา HTTP เริ่มต้นสำหรับ Apigee ขอบ
การตรวจหาบุคคล ไม่บังคับ
ประเภท จำนวนเต็ม

&lt;HTTPTargetConnection&gt; องค์ประกอบ

ให้รายละเอียดการรับส่งข้อมูล เช่น พร็อพเพอร์ตี้ URL, TLS/SSL และ HTTP โปรดดู ข้อมูลอ้างอิงการกำหนดค่า <TargetEndpoint>

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <LoadBalancer/>
    <SSLInfo/>
    <Properties/>
</HTTPTargetConnection>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ต้องระบุ
ประเภท ไม่มี

&lt;HTTPTargetConnection&gt;/&lt;URL&gt; องค์ประกอบ

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>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ต้องระบุ
ประเภท สตริง

&lt;HTTPTargetConnection&gt;/&lt;SSLInfo&gt; องค์ประกอบ

การกำหนดค่า 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>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ไม่บังคับ
ประเภท ไม่มี

&lt;HTTPTargetConnection&gt;/&lt;Properties&gt; องค์ประกอบ

พร็อพเพอร์ตี้การนำส่ง 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>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ไม่บังคับ
ประเภท ไม่มี

&lt;HTTPTargetConnection&gt;/&lt;LoadBalancer&gt; องค์ประกอบ

เรียกใช้เซิร์ฟเวอร์เป้าหมายอย่างน้อย 1 เซิร์ฟเวอร์และจัดสรรภาระงานในเซิร์ฟเวอร์ดังกล่าว ดูเป้าหมายการโทร เซิร์ฟเวอร์ตัวอย่างในส่วนตัวอย่าง ดูข้อมูลเพิ่มเติมที่การจัดสรรภาระงานในแบ็กเอนด์ เซิร์ฟเวอร์ ดูชุมชนนี้เพิ่มเติม โพสต์ที่กล่าวถึงวิธีเรียกใช้เซิร์ฟเวอร์เป้าหมายจากทั้งนโยบายคำขอราคาเสนอบริการและ โดยใช้กฎเส้นทาง

<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ไม่บังคับ
ประเภท ไม่เกี่ยวข้อง

&lt;LocalTargetConnection&gt; องค์ประกอบ

ระบุพร็อกซีภายใน ซึ่งก็คือพร็อกซีในองค์กรและสภาพแวดล้อมเดียวกัน เป็น ของไฮไลต์บริการ

หากต้องการระบุเป้าหมายเพิ่มเติม ให้ใช้องค์ประกอบ <APIProxy> และ <ProxyEndpoint> หรือองค์ประกอบ <Path>

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
   <Path/>
</LocalTargetConnection>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ต้องระบุ
ประเภท ไม่มี

&lt;LocalTargetConnection&gt;/&lt;APIProxy&gt; องค์ประกอบ

ชื่อของพร็อกซี API ที่เป็นเป้าหมายของการเรียกใช้ภายใน พร็อกซีต้องอยู่ในชุดเดียวกัน องค์กรและสภาพแวดล้อมเป็นพร็อกซีในการเรียกใช้

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

พร้อมด้วยองค์ประกอบ <APIProxy> ให้ใส่ <ProxyEndpoint> สำหรับระบุชื่อปลายทางของพร็อกซีที่ควร ที่กำหนดเป้าหมายสำหรับการโทร

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
</LocalTargetConnection> 
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ต้องระบุ
ประเภท สตริง

&lt;LocalTargetConnection&gt;/&lt;ProxyEndpoint&gt; องค์ประกอบ

ชื่อของปลายทางของพร็อกซีที่ควรเป็นเป้าหมายของการเรียกใช้ นี่คือปลายทางของพร็อกซีใน พร็อกซี API ที่ระบุด้วยองค์ประกอบ <APIProxy>

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ไม่บังคับ
ประเภท ไม่มี

&lt;LocalTargetConnection&gt;/&lt;Path&gt; องค์ประกอบ

เส้นทางไปยังปลายทางที่มีการกำหนดเป้าหมาย ปลายทางต้องอ้างถึงพร็อกซีใน องค์กรและสภาพแวดล้อมเป็นพร็อกซีในการเรียกใช้

ใช้สายนี้แทนการจับคู่ <APIProxy>/<ProxyEndpoint> เมื่อคุณไม่ได้ใช้ ทราบหรือพึ่งพาชื่อพร็อกซีไม่ได้ เส้นทางอาจเป็นเป้าหมายที่เชื่อถือได้

<LocalTargetConnection>
   <Path>/data-manager</Path>
</LocalTargetConnection>
ค่าเริ่มต้น ไม่มี
การตรวจหาบุคคล ไม่บังคับ
ประเภท ไม่มี

สคีมา

ตัวแปรโฟลว์

ตัวแปรโฟลว์จะเปิดใช้ลักษณะการทำงานแบบไดนามิกของนโยบายและโฟลว์ขณะรันไทม์ โดยอิงตาม HTTP ส่วนหัว เนื้อหาข้อความ หรือบริบทโฟลว์ได้ ตัวแปรโฟลว์ที่กำหนดไว้ล่วงหน้าต่อไปนี้พร้อมให้ใช้งานแล้ว หลังจากที่นโยบายคำขอราคาเสนอบริการทำงาน ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรโฟลว์ได้ที่ข้อมูลอ้างอิงตัวแปร

ข้อความไฮไลต์บริการจะมีคำขอและการตอบกลับของตนเอง คุณจะเข้าถึงข้อมูลดังกล่าวได้ผ่าน ตัวแปร เนื่องจากข้อความหลักใช้ request.* และ คำนำหน้าตัวแปร response.* รายการ ให้ใช้ myrequest.* และ calloutResponse.* นำหน้า (ค่าเริ่มต้นในการกำหนดค่าการเรียกบริการ) เป็น ดูข้อมูลข้อความสำหรับข้อความไฮไลต์บริการโดยเฉพาะ ตัวอย่างแรกในตารางต่อไปนี้แสดง วิธีรับส่วนหัว HTTP ในข้อความไฮไลต์บริการ

ตัวแปร คำอธิบาย

ต่อไปนี้เป็นตัวอย่างการรับคำขอราคาเสนอบริการและส่วนหัวการตอบกลับ คล้ายกับวิธีที่คุณรับส่วนหัวจากคำขอและการตอบกลับหลักและ

calloutResponse.header.HeaderName

myRequest.header.HeaderName

โดยที่ calloutResponse เป็นชื่อตัวแปรสําหรับการตอบกลับในบริการ ข้อความไฮไลต์ และ myRequest เป็นชื่อตัวแปรสำหรับคำขอ เช่น

calloutResponse.header.Content-Length

แสดงผลส่วนหัว 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 เป้าหมายสำหรับข้อความไฮไลต์บริการ

calloutResponse.content

โดยที่ calloutResponse คือ<Response>ชื่อตัวแปร ในการกำหนดค่าไฮไลต์บริการ

ขอบเขต: จากการตอบกลับคำขอราคาเสนอบริการเป็นต้นไป
ประเภท: สตริง
สิทธิ์: อ่าน/เขียน

เนื้อหาการตอบกลับจากข้อความไฮไลต์บริการ

servicecallout.{policy-name}.expectedcn

ขอบเขต: จากคำขอคำขอราคาเสนอบริการเป็นต้นไป
ประเภท: สตริง
สิทธิ์: อ่าน/เขียน

ชื่อทั่วไปที่คาดไว้ของ TargetEndpoint ตามที่อ้างอิงใน Serviceคำขอราคาเสนอ ซึ่งจะมีความหมายก็ต่อเมื่อ TargetEndpoint อ้างอิงถึง TLS/SSL เท่านั้น ปลายทาง

servicecallout.{policy-name}.failed

ขอบเขต: จากการตอบกลับคำขอราคาเสนอบริการเป็นต้นไป
ประเภท: บูลีน
สิทธิ์: อ่าน/เขียน

บูลีนที่ระบุว่านโยบายสำเร็จ เท็จ หรือล้มเหลว เป็น "จริง"

ข้อผิดพลาด

ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ แก้ไข
steps.servicecallout.ExecutionFailed 500

ข้อผิดพลาดนี้อาจเกิดขึ้นในกรณีต่อไปนี้

  • ระบบจะขอให้นโยบายนี้จัดการอินพุตที่ผิดรูปแบบหรือไม่ถูกต้อง
  • บริการเป้าหมายแบ็กเอนด์จะแสดงสถานะข้อผิดพลาด (โดยค่าเริ่มต้นคือ 4xx หรือ 5xx)
steps.servicecallout.RequestVariableNotMessageType 500 ตัวแปรคำขอที่ระบุในนโยบายไม่ใช่ประเภท "ข้อความ" ตัวอย่างเช่น หาก เป็นสตริงหรือประเภทที่ไม่ใช่ข้อความ คุณจะเห็นข้อผิดพลาดนี้
steps.servicecallout.RequestVariableNotRequestMessageType 500 ตัวแปรคำขอที่ระบุในนโยบายไม่ใช่ประเภท "ข้อความคำขอ" สำหรับ เช่น ถ้าเป็นประเภทการตอบกลับ คุณจะเห็นข้อผิดพลาดนี้

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
URLMissing องค์ประกอบ <URL> ภายใน <HTTPTargetConnection> ไม่มีหรือว่างเปล่า
ConnectionInfoMissing ข้อผิดพลาดนี้เกิดขึ้นหากนโยบายไม่มี <HTTPTargetConnection> หรือ <LocalTargetConnection>
InvalidTimeoutValue ข้อผิดพลาดนี้เกิดขึ้นหากค่า <Timeout> เป็นลบหรือ 0

ตัวแปรความผิดพลาด

ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย

ตัวแปร สถานที่ ตัวอย่าง
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>

หัวข้อที่เกี่ยวข้อง