การกำหนดค่าโฟลว์

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

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

หากต้องการดูภาพรวมเชิงแนวคิดของโฟลว์ โปรดดูการควบคุมวิธีการทํางานของพร็อกซีกับ

หัวข้อนี้จะอธิบายวิธีสร้างขั้นตอนแบบมีเงื่อนไขและเพิ่มตรรกะ (นโยบาย) ให้กับโฟลว์ที่ ระดับสูง ศิลปะการสร้างเงื่อนไขเกี่ยวข้องกับรายละเอียดมากกว่าที่กล่าวถึงใน หัวข้อ สำหรับรายละเอียดดังกล่าว โปรดดูภาพรวมของขั้นตอน ตัวแปรและเงื่อนไข ด้วยตัวแปรโฟลว์

การแนบนโยบายกับโฟลว์

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

เช่น

  • แนบนโยบายความปลอดภัย OAuth กับ request PreFlow ของ ProxyEndpoint เนื่องจาก PreFlow ของคำขอ ProxyEndpoint เป็นโฟลว์แรกในไปป์ไลน์ ซึ่งคุณสามารถใช้ได้ทันที ปฏิเสธคำขอหากคำขอนั้นละเมิดนโยบายความปลอดภัยของคุณ
  • แนบนโยบาย JSON กับการแปลง XML กับ Response PostFlow ของ TargetEndpoint เพื่อแปลง การตอบสนองจาก JSON เป็น XML
  • แนบนโยบาย JavaScript ในเงื่อนไข โฟลว์ของ ProxyEndpoint เพื่อเรียกใช้โค้ด JavaScript เพื่อประมวลผล คำขอ

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

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

ในแผงเพิ่มขั้นตอน อินสแตนซ์นโยบายใหม่จะสร้างขึ้นโดยมีประเภทนโยบายเป็นโควต้าและ
    โควต้าชื่อที่แสดง - 2

การแนบนโยบายกับขั้นตอนที่เลือกหมายความว่าคุณกำลังกำหนดค่าพร็อกซี API เพื่อบังคับใช้ นโยบายโควต้าเฉพาะสำหรับคำขอที่ส่งไปยังชุด URI และกริยาของโฟลว์ดังกล่าว ตัวอย่างเช่น หากคุณ แนบนโยบายกับขั้นตอนเรียนรู้ในคำขอ XML ต่อไปนี้คือ ที่สร้างขึ้นในมุมมองโค้ดของตัวแก้ไขพร็อกซี ดังนี้

<ProxyEndpoint name="default">
...
   <Flow name="issue">
        <Description/>
        <Request>
            <Step>
                <Name>Quota-2</Name>
            </Step>
        </Request>
        <Response/>
        <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
    </Flow>
... 
</ProxyEndpoint>

ในการกำหนดค่านี้ หากคำขอ GET เข้ามาในพร็อกซี API ที่มี URI รูปแบบของ .../issue/** (/issue/ กับอะไรก็ได้ใน URI หลังจากการส่งต่อครั้งสุดท้าย เครื่องหมายทับ) ระบบจะบังคับใช้โควต้ากับการเรียก API นั้น

เกี่ยวกับขั้นตอนแบบมีเงื่อนไข

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

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

  • ไปป์ไลน์คำขอของ ProxyEndpoint
  • ไปป์ไลน์คำขอของ TargetEndpoint
  • ไปป์ไลน์การตอบสนองของ ProxyEndpoint
  • ไปป์ไลน์การตอบสนองของ TargetEndpoint

วิดีโอ: ดูวิดีโอสั้นๆ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับขั้นตอนแบบมีเงื่อนไข

ตัวอย่างเช่น คำจำกัดความของ ProxyEndpoint ต่อไปนี้จะแสดงขั้นตอนแบบมีเงื่อนไขที่ดำเนินการ โดย ProxyEndpoint ในคำขอ HTTP GET ที่ส่งไปยังพร็อกซี API

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>   
  <Flows>
    <Flow name="Flow-1">
      <Condition>request.verb="GET"</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

โปรดสังเกตว่าเงื่อนไขอ้างอิงโฟลว์ request.verb ตัวแปร ชื่อของตัวแปรโฟลว์คือการอ้างอิงที่มีข้อมูลสถานะเชื่อมโยงอยู่ ที่มีธุรกรรม API ที่ Edge ประมวลผล Edge จะกำหนดตัวแปรสถานะต่างๆ ที่คุณสามารถ ข้อมูลอ้างอิง

บริการ RESTful คือคอลเล็กชันทรัพยากร API ทรัพยากร API คือส่วนย่อยของเส้นทาง URI ซึ่งระบุเอนทิตีที่นักพัฒนาซอฟต์แวร์เข้าถึงได้โดยเรียกใช้ API ของคุณ ตัวอย่างเช่น หาก จะมีรายงานสภาพอากาศและพยากรณ์อากาศ โดย API ของคุณอาจกำหนด ขั้นตอนแบบมีเงื่อนไขที่แมปกับ API เหล่านั้น แหล่งข้อมูล: /reports และ /forecasts เมื่อมีการเรียก API รวมหนึ่งในทรัพยากรเหล่านั้นใน URL เงื่อนไขจะประเมินค่าเป็นจริงและตรรกะ ที่แนบไปกับขั้นตอนการดำเนินการแบบมีเงื่อนไข

จากนั้นนักพัฒนาแอปจะเข้าถึงทรัพยากรของคุณโดยการส่งคำขอไปยัง URL ในแบบฟอร์มต่อไปนี้

http://myAPIs.myCo.com/weather/reports

หรือ

http://myAPIs.myCo.com/weather/forecasts

ในพร็อกซี API คุณสามารถกำหนดขั้นตอนแบบมีเงื่อนไขที่สอดคล้องกับ แหล่งข้อมูล:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>   
  <Flows>
    <Flow name="Flow-1">
      <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
      <Request/>
      <Response/>
    </Flow>
    <Flow name="Flow-2">
      <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

ในตัวอย่างนี้ คุณอ้างอิงตัวแปรโฟลว์ proxy.pathsuffix ซึ่งมีส่วนต่อท้ายของ URL ที่ใช้เข้าถึงพร็อกซี API จากนั้นคุณสามารถแนบไฟล์ นโยบายที่แตกต่างกันสำหรับขั้นตอนแบบมีเงื่อนไขสำหรับทรัพยากรแต่ละรายการ

การเพิ่มขั้นตอนแบบมีเงื่อนไข

ในตัวอย่างสั้นๆ นี้ คุณจะตั้งค่าขั้นตอนที่จะทำงานเมื่อข้อความคำขอเป็น HTTP GET

หากต้องการเพิ่มขั้นตอนแบบมีเงื่อนไข ให้เลือกแท็บพัฒนาในเครื่องมือสร้างพร็อกซี API

แท็บพัฒนาของเครื่องมือสร้างพร็อกซี

คลิกไอคอน + ในปลายทางที่ต้องการ

เพิ่มปุ่มโฟลว์แบบมีเงื่อนไข

แบบฟอร์มโฟลว์แบบมีเงื่อนไขใหม่จะให้คุณตั้งชื่อขั้นตอนและกำหนดค่าเงื่อนไขได้ ใน ตัวอย่างต่อไปนี้ ให้เพิ่มเงื่อนไขง่ายๆ ที่ประเมิน HTTP ของข้อความคำขอสำหรับ กริยา GET (ที่ไม่ใช่ PUT, POST ฯลฯ) ใน URI หลังเส้นทางฐาน

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

(เรียนรู้วิธีสร้างคำสั่งแบบมีเงื่อนไขในตัวแปรโฟลว์และ เงื่อนไข)

ขั้นตอนใหม่ที่เรียกว่า Flow-1 จะปรากฏในเมนูนำทาง

ไฮไลต์โฟลว์-1

จากนั้นสังเกตการกำหนดค่า XML สำหรับ ProxyEndpoint เลือก Flow-1 ใน เมนู Navigator

คุณจะเห็นการกำหนดค่าต่อไปนี้

<PreFlow name="PreFlow">
    <Request/>
    <Response/>
</PreFlow>   
<Flows>
    <Flow name="Flow-1">
      <Request/>
      <Response/>
      <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
    </Flow>
</Flows>
<PostFlow name="PostFlow">
    <Request/>
    <Response/>
</PostFlow>

ขั้นตอนถัดไป

หัวข้อต่อไปนี้จะให้รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างเงื่อนไขและการใช้ ตัวแปร: