Định cấu hình luồng

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Flow là thành phần cơ bản của proxy API. Flow cho phép bạn lập trình hành vi của API bằng cách cho phép bạn định cấu hình trình tự thực thi các chính sách và mã proxy.

Để biết thông tin tổng quan về luồng, hãy xem phần Kiểm soát cách proxy thực thi bằng flow.

Chủ đề này mô tả cách tạo luồng có điều kiện và thêm logic (chính sách) vào các luồng tại cấp cao. Nghệ thuật tạo ra các điều kiện liên quan đến nhiều chi tiết hơn những gì được đề cập trong chủ đề. Để biết thông tin chi tiết đó, hãy xem bài viết Tổng quan về luồng biếnĐiều kiện bằng các biến luồng.

Đính kèm chính sách vào luồng

Edge đi kèm với nhiều loại chính sách định sẵn khác nhau để triển khai tính năng bảo mật, quản lý và thao túng thông báo. Ngoài ra, các chính sách cho phép bạn thêm mã tuỳ chỉnh của riêng mình vào tuỳ chỉnh toàn bộ tính năng xử lý tin nhắn.

Ví dụ:

  • Đính kèm chính sách bảo mật OAuth vào yêu cầu PreFlow của ProxyEndpoint. Vì Yêu cầu PreFlow của ProxyEndpoint là luồng đầu tiên trong quy trình, bạn có thể ngay lập tức từ chối yêu cầu nếu yêu cầu đó vi phạm chính sách bảo mật của bạn.
  • Đính kèm chính sách chuyển đổi JSON sang XML vào phản hồi PostFlow của TargetEndpoint để chuyển đổi phản hồi từ JSON sang XML.
  • Đính kèm chính sách JavaScript vào chính sách có điều kiện Luồng ProxyEndpoint để thực thi mã JavaScript nhằm xử lý yêu cầu

Sau khi tạo một quy trình có điều kiện, bạn sẽ có thể đính kèm quy trình này để đính kèm chính sách. Theo luồng đã chọn, hãy nhấp vào biểu tượng + Bước trong sơ đồ yêu cầu hoặc phản hồi để thêm chính sách mới hoặc hiện có vào quy trình.

Trong trình đơn Điều hướng, một luồng có điều kiện mẫu có tên là issue được làm nổi bật, và
    trong ngăn Quy trình, nút Bước sẽ hiển thị.

Trong ngăn Thêm bước, một phiên bản chính sách mới sẽ được tạo với loại chính sách Hạn mức và
    tên hiển thị Hạn mức-2.

Bằng cách đính kèm chính sách này vào quy trình đã chọn, bạn sẽ định cấu hình proxy API để thực thi chính sách Chính sách về hạn mức chỉ dành cho các yêu cầu được gửi đến tổ hợp động từ và URI luồng đó. Ví dụ: nếu bạn đính kèm chính sách này vào quy trình learn (tìm hiểu) trong yêu cầu, tệp XML sau đây được tạo trong chế độ xem mã của trình chỉnh sửa proxy:

<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>

Trong cấu hình này, nếu yêu cầu GET xuất hiện trên proxy API có URI mẫu .../issue/** (/issue/ với bất kỳ vấn đề nào trong URI sau hộp thư chuyển tiếp gần nhất dấu gạch chéo), hạn mức sẽ được thực thi trên lệnh gọi API đó.

Giới thiệu về luồng có điều kiện

Mọi chính sách được đính kèm với PreFlow hoặc PostFlow đều luôn được thực thi. Tuy nhiên, các chính sách trong luồng có điều kiện chỉ được thực thi nếu điều kiện của luồng có giá trị là true.

Trong quá trình xử lý yêu cầu và phản hồi, chỉ một luồng có điều kiện được thực thi trên mỗi phân đoạn--luồng đầu tiên có điều kiện được đánh giá là true. Điều đó có nghĩa là bạn có thể có luồng có điều kiện được thực thi trong mỗi quy tắc:

  • Quy trình yêu cầu của ProxyEndpoint
  • Quy trình yêu cầu của TargetEndpoint
  • Quy trình phản hồi của ProxyEndpoint
  • Quy trình phản hồi của TargetEndpoint

Video: Xem video ngắn để tìm hiểu thêm về luồng có điều kiện.

Ví dụ: định nghĩa ProxyEndpoint sau đây cho thấy một luồng có điều kiện được thực thi bởi ProxyEndpoint vào bất kỳ yêu cầu HTTP GET nào đến proxy 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>

Lưu ý rằng điều kiện tham chiếu đến luồng request.verb biến. Biến luồng có tên là các tham chiếu chứa thông tin trạng thái được liên kết bằng giao dịch API do Edge xử lý. Edge xác định nhiều biến trạng thái mà bạn có thể tham chiếu.

Dịch vụ RESTful là tập hợp các tài nguyên API. Tài nguyên API là một mảnh đường dẫn URI xác định một số thực thể mà nhà phát triển có thể truy cập bằng cách gọi API của bạn. Ví dụ: nếu phần phụ trợ dịch vụ cung cấp các báo cáo thời tiết và dự báo thời tiết, API của bạn có thể xác định hai flow có điều kiện liên kết đến các API đó tài nguyên: /reports/forecasts. Khi lệnh gọi API bao gồm một trong các tài nguyên đó trong URL, điều kiện được đánh giá là true và logic gắn với luồng có điều kiện sẽ được thực thi.

Sau đó, nhà phát triển ứng dụng truy cập vào tài nguyên của bạn bằng cách đưa ra yêu cầu tới một URL trong biểu mẫu:

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

hoặc:

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

Trong proxy API, bạn có thể xác định luồng có điều kiện tương ứng với một tài nguyên:

<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>

Trong ví dụ này, bạn tham chiếu đến biến luồng proxy.pathsuffix, chứa phần hậu tố của URL dùng để truy cập proxy API. Sau đó, bạn có thể đính kèm các chính sách khác nhau đối với luồng có điều kiện cho từng tài nguyên.

Thêm quy trình có điều kiện

Trong ví dụ ngắn gọn này, bạn thiết lập một quy trình chỉ thực thi khi thông báo yêu cầu là một HTTP GET.

Để thêm một quy trình có điều kiện, hãy chọn thẻ Develop (Phát triển) trong trình tạo proxy API.

Thẻ Phát triển trình tạo proxy

Nhấp vào biểu tượng dấu + trong điểm cuối mong muốn.

Nút thêm luồng có điều kiện

Biểu mẫu Luồng có điều kiện mới cho phép bạn đặt tên cho luồng và định cấu hình một điều kiện. Trong trong ví dụ sau: bạn thêm một điều kiện đơn giản đánh giá HTTP của thông báo yêu cầu đối với động từ GET (trái ngược với PUT, POST, v.v.) trên bất kỳ URI nào sau đường dẫn cơ sở.

Trong ngăn Luồng có điều kiện mới, luồng có tên là Flow-1 và loại điều kiện là
    đường dẫn và động từ được định cấu hình.

(Tìm hiểu cách tạo câu lệnh có điều kiện trong Biến luồng và điều kiện.)

Flow mới, có tên là Flow-1, hiện xuất hiện trong Trình đơn điều hướng.

Flow-1 được làm nổi bật

Bây giờ, hãy quan sát cấu hình XML cho ProxyEndpoint. Chọn Flow-1 trong Trình đơn Điều hướng.

Bạn sẽ thấy cấu hình sau.

<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>

Các bước tiếp theo

Các chủ đề sau đây cung cấp thêm thông tin chi tiết về cách xây dựng các điều kiện và cách sử dụng biến: