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

Luồng là thành phần cơ bản của proxy API. Luồng 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ự mà các chính sách và mã được proxy API thực thi.

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

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

Đính kèm chính sách vào quy trình

Edge mang đến nhiều loại chính sách được xác định trước để triển khai tính bảo mật, quản lý lưu lượng truy cập và thao túng thông báo. Ngoài ra, các chính sách còn cho phép bạn thêm mã tuỳ chỉnh của riêng mình để tuỳ chỉnh hoàn toàn hoạt động xử lý thông báo.

Ví dụ:

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

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

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

Trong ngăn Thêm bước, một thực thể chính sách mới sẽ được tạo có 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 luồng đã chọn, bạn sẽ định cấu hình proxy API để chỉ thực thi chính sách Hạn mức cho các yêu cầu được gửi đến URI luồng và tổ hợp động từ đó. 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, thì mã XML sau sẽ đượ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 một yêu cầu GET đến trên proxy API có mẫu URI là .../issue/** (/issue/ có bất kỳ nội dung nào trong URI sau dấu gạch chéo lên gần nhất), hạn mức sẽ được thực thi đối với lệnh gọi API đó.

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

Mọi chính sách đí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 một luồng có điều kiện chỉ được thực thi nếu điều kiện của luồng đó được đánh giá là đúng.

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 cho mỗi phân đoạn – luồng đầu tiên có điều kiện được đánh giá là đúng. Điều đó có nghĩa là bạn có thể thực thi một luồng có điều kiện trong mỗi luồng:

  • 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ề các 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 ProxyEndpoint thực thi trên bất kỳ yêu cầu HTTP GET nào đối với 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>

Xin lưu ý rằng điều kiện này tham chiếu đến biến luồng request.verb. Biến luồng được đặt tên là những tệp tham chiếu chứa thông tin trạng thái liên kết với 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 giúp 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 báo cáo thời tiết và thông tin dự báo thời tiết, thì API của bạn có thể xác định 2 luồng có điều kiện liên kết đến các tài nguyên API đó: /reports/forecasts. Khi lệnh gọi API đưa một trong các tài nguyên đó vào URL, điều kiện sẽ được đánh giá là true (đúng) và logic đính kèm với luồng có điều kiện sẽ được thực thi.

Sau đó, nhà phát triển ứng dụng có thể 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 có dạng:

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

hoặc:

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

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

<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, trong đó 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 nhiều chính sách vào luồng có điều kiện cho từng tài nguyên.

Thêm luồng có điều kiện

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

Để thêm một luồng có điều kiện, hãy chọn thẻ 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 + ở đ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 ví dụ sau, bạn thêm một điều kiện đơn giản để đánh giá HTTP của thông điệp yêu cầu cho độ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 điều kiện mới, luồng được đặt tên là Luồng-1 và loại điều kiện, đườ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 phần Biến luồng và điều kiện.)

Quy trình mới, có tên là Flow-1, giờ đây sẽ xuất hiện trong trình đơn Trình điều hướng.

Flow-1 được đánh dấu

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

Bạn sẽ thấy cấu hình 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ác điều kiện xây dựng và cách sử dụng các biến: