Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Phần này cung cấp thông tin tham khảo về các phần tử XML mà bạn dùng để xác định các luồng proxy API.
Hệ phân cấp và cú pháp
Các ví dụ sau đây cho thấy hệ thống phân cấp phần tử và cú pháp của các phần tử cấu hình luồng:
Hệ phân cấp phần tử
Ví dụ sau đây cho thấy hệ thống phân cấp của các phần tử cấu hình luồng trong các phần tử <ProxyEndpoint> và <TargetEndpoint>:
<ProxyEndpoint | TargetEndpoint>
<PreFlow>
<Request>
<Step>
<Condition>
<Name>
<Response>
<Step>
<Condition>
<Name>
<Description>
<Flows>
<Flow>
<Description>
<Condition>
<Request>
<Step>
<Response>
<Step>
<Description>
<PostFlow>
<Request>
<Step>
<Response>
<Step>
<Description>
<PostClientFlow> (<ProxyEndpoint> only)
<Response>
<Description>
// Additional configuration elements
</ProxyEndpoint | TargetEndpoint>Cú pháp
Ví dụ sau đây cho thấy cú pháp của các phần tử cấu hình luồng. Mỗi phần tử này được mô tả chi tiết trong các phần sau:
<!-- ProxyEndpoint flow configuration file -->
<ProxyEndpoint ... >
...
<PreFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PreFlow>
<Flows name="flow_name">
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow>
</Flows>
<PostFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostFlow>
<PostClientFlow name="flow_name">
<Description>flow_description</Description>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostClientFlow>
...
</ProxyEndpoint>
<!-- TargetEndpoint flow configuration file -->
<TargetEndpoint ... >
...
<PreFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PreFlow>
<Flows name="flow_name">
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow>
...
</Flows>
<PostFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostFlow>
...
</TargetEndpoint>Bạn sử dụng các phần tử này để xác định quá trình thực thi PreFlow, Conditional Flow, PostFlow và PostClientFlow.
<Condition>
Xác định một câu lệnh được xử lý trong thời gian chạy. Nếu câu lệnh đánh giá là true, thì bước hoặc quy trình liên kết với điều kiện sẽ được thực thi. Nếu câu lệnh đánh giá là false, thì bước hoặc quy trình sẽ bị bỏ qua.
| Loại | Chuỗi |
| (Các) phần tử mẹ | <Flow><Step> |
| (Các) phần tử con | Không có |
Bạn có thể áp dụng một điều kiện cho một bước cụ thể hoặc cho toàn bộ quy trình, tuỳ thuộc vào việc bạn đặt phần tử trong phần tử <Flow> hay <Step>:
// Condition can apply to just one step: // Or to the flow:<Flows><Flows><Flow><Flow><Step><Condition><Condition><Step><Name><Name>... ... ... ... ... ... </Flows> </Flows>
Nếu một điều kiện trong <Step> được đánh giá là đúng, Edge sẽ thực thi bước đó. Nếu điều kiện đánh giá là sai, Edge sẽ bỏ qua bước này.
Nếu một điều kiện trong <Flow> đánh giá là true, Edge sẽ xử lý tất cả các bước trong quy trình. Nếu điều kiện đánh giá là false, Edge sẽ bỏ qua toàn bộ quy trình.
Cú pháp
Phần tử <Condition> sử dụng cú pháp sau:
<Condition>property operator "value"</Condition>
Trong trường hợp:
- property
- Thuộc tính biến luồng mà bạn muốn dùng trong điều kiện. Ví dụ: biến luồng
requestcó các thuộc tính có tên làpathvàcontent. Để sử dụng các thuộc tính này trong một điều kiện, bạn chỉ định flow_variable[dấu chấm]property_name:request.path request.content
Để xem danh sách đầy đủ các biến luồng và thuộc tính của chúng, hãy xem Tài liệu tham khảo về biến luồng.
- operator
- Một cấu trúc xác định cách đánh giá điều kiện của bạn. Các toán tử phổ biến bao gồm:
> greater than <= less than or equal to < less than >= greater than or equal to = equals && and != not equals || or ~~ JavaRegex ~ Matches /~ MatchesPath
Để xem danh sách đầy đủ, hãy xem Các toán tử trong phần Tài liệu tham khảo về điều kiện.
- "value"
- Giá trị mà thuộc tính biến luồng được đánh giá dựa trên đó. Đây thường là một kiểu cơ bản, chẳng hạn như số nguyên hoặc chuỗi. Ví dụ: 200 hoặc "/cat". Giá trị có thể bao gồm các ký tự đại diện, chẳng hạn như dấu hoa thị và các ký tự khác để so khớp mẫu, như mô tả trong phần So khớp mẫu có điều kiện.
Ví dụ 1
Ví dụ sau đây kiểm tra xem thuộc tính verb của biến luồng request có phải là "GET" hay không:
<!-- api-platform/reference/examples/flow-segments/condition-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PreFlow> ... </ProxyEndpoint>
Nếu yêu cầu là "GET", thì ví dụ này sẽ thực thi chính sách "Log-Request-OK".
Ví dụ 2
Ví dụ sau đây kiểm tra mã phản hồi:
<!-- api-platform/reference/examples/flow-segments/condition-2.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> ... </ProxyEndpoint>
Tuỳ thuộc vào giá trị của mã, một chính sách khác sẽ được thực thi.
Thuộc tính
Phần tử <Condition> không có thuộc tính nào.
Phần tử con
Phần tử <Condition> không có phần tử con.
<Description>
Mô tả quy trình bằng ngôn từ dễ hiểu. Sử dụng phần tử này để cung cấp thông tin về quy trình cho chính bạn hoặc các nhà phát triển khác. Nội dung mô tả này không hiển thị bên ngoài.
| Loại | Chuỗi |
| (Các) phần tử mẹ | <Flow><PreFlow><PostFlow> |
| (Các) phần tử con | Không có |
Cú pháp
Phần tử <Description> sử dụng cú pháp sau:
<Description>flow_description</Description>
Ví dụ
Ví dụ sau đây minh hoạ một phần tử <Description> chỉ định mục đích của một quy trình:
<!-- api-platform/reference/examples/flow-segments/description-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>XML-to-JSON-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Thuộc tính
Phần tử <Description> không có thuộc tính nào.
Phần tử con
Phần tử <Description> không có phần tử con.
<Flow>
Xác định một nhóm các bước tuỳ chỉnh mà Edge sẽ thực thi.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <Flows> |
| (Các) phần tử con | <Condition><Description><Request><Response> |
Bạn có thể chỉ định <Condition> trên <Flow> (không bắt buộc). Trong trường hợp đó, Edge chỉ thực thi các bước trong quy trình nếu điều kiện được đánh giá là đúng. Nếu không, Edge sẽ bỏ qua toàn bộ quy trình.
Phần tử <Flows> có thể chứa nhiều phần tử <Flow>, mỗi phần tử có điều kiện và các bước riêng. Khi có nhiều phần tử <Flow>, Edge chỉ thực thi phần tử đầu tiên không có điều kiện hoặc điều kiện đánh giá là đúng.
Bạn có thể xác định một luồng mặc định luôn thực thi (nếu không có luồng có điều kiện nào khác thực hiện). Tuỳ thuộc vào cách định cấu hình proxy API, đây có thể là một công cụ hữu ích trong việc bảo vệ chống lại các cuộc tấn công độc hại.
Cú pháp
Phần tử <Flow> sử dụng cú pháp sau:
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow>Tất cả phần tử con của <Flow> đều không bắt buộc.
Ví dụ 1
Ví dụ sau đây minh hoạ một <Flow> đơn giản luôn thực thi chính sách "Log-Message-OK":
<!-- api-platform/reference/examples/flow-segments/flow-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-flow"> <Flow> <Request> <Step> <Name>Log-Message-OK</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Ví dụ 2
Ví dụ sau đây cho thấy một <Flow> có nhiều bước, mỗi bước có điều kiện riêng:
<!-- api-platform/reference/examples/flow-segments/flow-2.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Ví dụ 3
Ví dụ sau đây minh hoạ nhiều luồng trong một Luồng có điều kiện:
<!-- api-platform/reference/examples/flow-segments/flows-2.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-flow-2"> <Response> <Step> <Condition>response.status.code >= 400</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-flow-3"> <Response> <Step> <Condition>response.status.code >= 300</Condition> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge chỉ thực thi một luồng trong một phân đoạn; Edge thực thi luồng đầu tiên không có điều kiện hoặc có điều kiện phân giải thành true.
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <Flow>:
| Thuộc tính | Loại | Mô tả |
|---|---|---|
name |
Chuỗi | (Bắt buộc) Mã nhận dạng duy nhất của luồng. Ví dụ: "My-Conditional-Flow-1". Tên không được chứa dấu cách hoặc các ký tự đặc biệt khác. |
Phần tử con
Bảng sau đây mô tả các phần tử con của <Flow>:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Condition> |
Chuỗi | Xác định một câu lệnh có điều kiện được xử lý trong thời gian chạy. Nếu câu lệnh đánh giá là true, thì luồng (và tất cả các bước của luồng) sẽ được thực thi. Nếu câu lệnh đánh giá là false, thì luồng (và tất cả các bước của luồng) sẽ bị bỏ qua. |
<Description> |
Chuỗi | Cung cấp nội dung mô tả ngắn gọn về quy trình. Nội dung mô tả này không hiển thị bên ngoài. |
<Request> |
Đối tượng phức tạp | Chỉ định các bước và điều kiện cho phân đoạn yêu cầu. |
<Response> |
Đối tượng phức tạp | Nêu rõ các bước và điều kiện cho đoạn phản hồi. |
<Flows>
Chứa từ 0 phần tử <Flow> trở lên.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <ProxyEndpoint><TargetEndpoint> |
| (Các) phần tử con | <Flow> |
Nếu có nhiều phần tử <Flow> trong <Flows>, thì chỉ một <Flow> sẽ thực thi. Đây sẽ là luồng đầu tiên không có <Condition> hoặc có điều kiện phân giải thành true.
Bạn có thể xác định một luồng mặc định luôn thực thi (nếu không có luồng nào khác thực hiện). Tuỳ thuộc vào cách định cấu hình proxy API, đây có thể là một công cụ hữu ích trong việc bảo vệ chống lại các cuộc tấn công độc hại.
Cú pháp
Phần tử <Flows> sử dụng cú pháp sau:
<Flows name="flow_name">
<Flow name="conditional_flow_name">
<Description>flow_description</Description>
<Condition>property operator "value"</Condition>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</Flow>
</Flows>Tất cả phần tử con của <Flows> đều không bắt buộc.
Ví dụ 1
Ví dụ sau đây minh hoạ một phần tử <Flows> đơn giản có một <Flow>:
<!-- api-platform/reference/examples/flow-segments/flows-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Edge thực thi một trong các chính sách này dựa trên hậu tố đường dẫn mà Edge thu thập được từ biến luồng proxy. Nếu hậu tố đường dẫn không khớp với cả hai điều kiện, thì Edge sẽ không thực thi quy trình này.
Ví dụ 2
Ví dụ sau đây cho thấy nhiều phần tử <Flow> trong <Flows>, mỗi phần tử có <Condition> riêng:
<!-- api-platform/reference/examples/flow-segments/flows-2.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-flow-2"> <Response> <Step> <Condition>response.status.code >= 400</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-flow-3"> <Response> <Step> <Condition>response.status.code >= 300</Condition> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge chỉ thực thi quy trình đầu tiên trong một phân đoạn có điều kiện được đánh giá là đúng. Sau đó, Edge sẽ bỏ qua các luồng còn lại trong phân đoạn.
Ví dụ 3
Ví dụ sau đây minh hoạ một <Flow> "mặc định":
<!-- api-platform/reference/examples/flow-segments/flows-3.xml --> <ProxyEndpoint name="default"> <Flows> <Flow name="my-conditional-flow-1"> <Response> <Step> <Condition>response.status.code = 200</Condition> <Name>Assign-Message-1</Name> </Step> </Response> </Flow> <Flow name="my-conditional-flow-2"> <Response> <Step> <Condition>response.header.someheader = "42"</Condition> <Name>Assign-Message-2</Name> </Step> </Response> </Flow> <Flow name="my-default-flow"> <Response> <Step> <Name>Assign-Message-3</Name> </Step> </Response> </Flow> </Flows> ... </ProxyEndpoint>
Edge chỉ thực thi quy trình đầu tiên trong một phân đoạn có điều kiện được đánh giá là đúng. Nếu không có luồng có điều kiện nào thực thi, thì luồng thứ ba trong ví dụ này (không có điều kiện) sẽ thực thi.
Luồng mặc định có thể là một công cụ hữu ích trong việc bảo vệ chống lại các cuộc tấn công độc hại.
Thuộc tính
Phần tử <Flows> không có thuộc tính nào.
Phần tử con
Phần tử <Flows> có các phần tử con sau đây:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Flow> |
Đối tượng phức tạp | Một quy trình xác định một nhóm các bước có thể có trong Quy trình có điều kiện. |
<Name>
Chỉ định mã nhận dạng của chính sách cần thực thi trong <Flow>.
| Loại | Chuỗi |
| (Các) phần tử mẹ | <Step> |
| (Các) phần tử con | Không có |
Cú pháp
Phần tử <Name> sử dụng cú pháp sau:
<Name>policy_name</Name>
Ví dụ
Ví dụ sau đây cho thấy 2 chính sách được thêm vào các luồng theo tên:
<!-- api-platform/reference/examples/flow-segments/name-1.xml --> <ProxyEndpoint name="default"> <Flows name="my-conditional-flows"> <Flow name="reports"> <Request> <Description>Based on the path suffix, determine which flow to use</Description> <Step> <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition> <Name>XML-to-JSON-1</Name> </Step> <Step> <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition> <Name>Verify-Auth-1</Name> </Step> </Request> </Flow> </Flows> ... </ProxyEndpoint>
Thuộc tính
Phần tử <Name> không có thuộc tính nào.
Phần tử con
Phần tử <Name> không có phần tử con.
<PostFlow>
Xác định các bước cần thực hiện trong PostFlow của yêu cầu và phản hồi.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <ProxyEndpoint><TargetEndpoint> |
| (Các) phần tử con | <Description><Request><Response> |
Phần tử <PostFlow> sử dụng cú pháp sau:
Cú pháp
<PostFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostFlow>Ví dụ
Ví dụ sau đây minh hoạ một PostFlow có các bước cho cả yêu cầu và phản hồi được xác định:
<!-- api-platform/reference/examples/flow-segments/postflow-1.xml --> <ProxyEndpoint name="default"> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <PostFlow>:
| Thuộc tính | Loại | Mô tả |
|---|---|---|
name |
Chuỗi | Mã nhận dạng duy nhất của luồng (duy nhất trong điểm cuối). Ví dụ: "My-PostFlow-1". Giá trị này không được chứa dấu cách hoặc các ký tự đặc biệt khác. |
Phần tử con
Bảng sau đây mô tả các phần tử con của <PostFlow>:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Description> |
Chuỗi | Cung cấp nội dung mô tả ngắn gọn về quy trình. |
<Request> |
Đối tượng phức tạp | Xác định các chính sách cần thực thi trong PostFlow của yêu cầu. |
<Response> |
Đối tượng phức tạp | Xác định các chính sách cần thực thi trong PostFlow của phản hồi. |
<PostClientFlow>
Xác định các chính sách trong ProxyEndpoint chỉ thực thi sau khi một phản hồi được trả về cho ứng dụng khách. Các chính sách này thường ghi lại những thông báo liên quan đến phản hồi.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <ProxyEndpoint> |
| (Các) phần tử con | <Description><Response> |
Cú pháp
Phần tử <PostClientFlow> sử dụng cú pháp sau:
<PostClientFlow name="flow_name">
<Description>flow_description</Description>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostClientFlow>Tất cả phần tử con của <PostClientFlow> đều không bắt buộc.
Ví dụ
Ví dụ sau đây cho thấy một PostClientFlow đơn giản thực thi một chính sách duy nhất:
<!-- api-platform/reference/examples/flow-segments/postclientflow-1.xml --> <ProxyEndpoint name="default"> <PostClientFlow name="my-postclientflows"> <Description>My first PostClientFlow. Processed after the response is sent back to the client.</Description> <Response> <Step> <Name>Message-Logging-OK</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <PostClientFlow>:
| Thuộc tính | Loại | Mô tả |
|---|---|---|
name |
Chuỗi | Mã nhận dạng duy nhất cho luồng. Tên không được chứa dấu cách hoặc các ký tự đặc biệt khác. Ví dụ: "My-PostClientFlow-1". |
Phần tử con
Bảng sau đây mô tả các phần tử con của <PostClientFlow>:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Description> |
Chuỗi | Cung cấp nội dung mô tả ngắn gọn về quy trình. |
<Response> |
Đối tượng phức tạp | Xác định các chính sách cần thực thi trong PostFlow của phản hồi. |
<PreFlow>
Xác định các chính sách cần thực thi trong PreFlow của yêu cầu và phản hồi.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <ProxyEndpoint><TargetEndpoint> |
| (Các) phần tử con | <Description><Request><Response> |
Cú pháp
Phần tử <PreFlow> sử dụng cú pháp sau:
<PreFlow name="flow_name">
<Description>flow_description</Description>
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PreFlow>Tất cả phần tử con của <PreFlow> đều không bắt buộc.
Ví dụ
Ví dụ sau đây cho thấy một PreFlow có yêu cầu và một quy trình phản hồi được xác định:
<!-- api-platform/reference/examples/flow-segments/preflow-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> ... </ProxyEndpoint>
Thuộc tính
Bảng sau đây mô tả các thuộc tính của phần tử <PreFlow>:
| Thuộc tính | Loại | Mô tả |
|---|---|---|
name |
Chuỗi | Mã nhận dạng duy nhất cho luồng. Tên không được chứa dấu cách hoặc các ký tự đặc biệt khác. Ví dụ: "My-PreFlow-1". |
Phần tử con
Bảng sau đây mô tả các phần tử con của <PreFlow>:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Description> |
Chuỗi | Cung cấp nội dung mô tả ngắn gọn về quy trình. |
<Request> |
Đối tượng phức tạp | Xác định các chính sách cần thực thi trong PreFlow của yêu cầu. |
<Response> |
Đối tượng phức tạp | Xác định các chính sách cần thực thi trong PreFlow của phản hồi. |
<Request>
Xác định các chính sách cần thực thi trong phân đoạn yêu cầu của quy trình.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <Flow><PreFlow><PostFlow> |
| (Các) phần tử con | <Condition><Step> |
Cú pháp
Phần tử <Request> sử dụng cú pháp sau:
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>Tất cả phần tử con của <Request> đều không bắt buộc.
Ví dụ
Ví dụ sau đây cho thấy các luồng được xác định cho yêu cầu trong cả PreFlow và PostFlow:
<!-- api-platform/reference/examples/flow-segments/request-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PreFlow> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> </PostFlow> ... </ProxyEndpoint>
Thuộc tính
Phần tử <Request> không có thuộc tính nào.
Phần tử con
Bảng sau đây mô tả các phần tử con của <Request>:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Condition> |
Đối tượng phức tạp | Xác định xem các bước trong phân đoạn yêu cầu có được thực thi hay không. |
<Step> |
Chuỗi | Chỉ định một chính sách để thực thi trong phân đoạn yêu cầu. |
<Response>
Xác định các chính sách cần thực thi trong phân đoạn phản hồi của quy trình.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <Flow><PreFlow><PostClientFlow><PostFlow> |
| (Các) phần tử con | <Condition><Step> |
Cú pháp
Phần tử <Response> sử dụng cú pháp sau:
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>Tất cả phần tử con của <Response> đều không bắt buộc.
Ví dụ
Ví dụ sau đây cho thấy các luồng được xác định cho phản hồi, trong cả PreFlow và PostFlow:
<!-- api-platform/reference/examples/flow-segments/response-1.xml --> <ProxyEndpoint name="default"> <PreFlow name="my-preFlows"> <Description>My first PreFlow</Description> <Response> <Step> <Condition>response.status.code LesserThanOrEquals 300</Condition> <Name>Log-Response-OK</Name> </Step> <Step> <Condition>response.status.code GreaterThan 300</Condition> <Name>Log-Response-NOT-OK</Name> </Step> </Response> </PreFlow> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Thuộc tính
Phần tử <Response> không có thuộc tính nào.
Phần tử con
Bảng sau đây mô tả các phần tử con của <Response>:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Condition> |
Chuỗi | Xác định xem các bước trong phân đoạn phản hồi có được thực thi hay không. |
<Step> |
Chuỗi | Chỉ định một chính sách để thực thi trong phân đoạn phản hồi. |
<Step>
Chỉ định một chính sách để thực thi và (không bắt buộc) một điều kiện xác định xem có thực thi chính sách đó hay không.
| Loại | Đối tượng phức tạp |
| (Các) phần tử mẹ | <Request><Response> |
| (Các) phần tử con | <Condition><Name> |
Bạn có thể xác định nhiều bước trong <Flow> và các bước này sẽ được thực thi theo thứ tự mà chúng được xác định trong XML của quy trình.
Các bước không có điều kiện luôn được thực thi. Các bước có điều kiện chỉ thực thi nếu điều kiện đánh giá là đúng. Nếu điều kiện đánh giá là sai, thì Edge sẽ bỏ qua bước này.
Cú pháp
Phần tử <Step> sử dụng cú pháp sau:
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
Chỉ có thể có một <Condition> và một <Name> cho mỗi <Step>, nhưng có thể có nhiều bước trong một <Flow>.
Tất cả phần tử con của <Step> đều không bắt buộc.
Ví dụ 1
Ví dụ sau đây minh hoạ một bước có điều kiện và một bước không có điều kiện:
<!-- api-platform/reference/examples/flow-segments/step-1.xml --> <ProxyEndpoint name="default"> <PostFlow name="my-postflows"> <Description>My first PostFlow</Description> <Request> <Step> <Condition>request.verb = "GET"</Condition> <Name>Log-Request-OK</Name> </Step> </Request> <Response> <Step> <Name>Set-Response-Headers</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Bước không có điều kiện sẽ thực thi mỗi lần trong phân đoạn yêu cầu. Bước có điều kiện sẽ chỉ thực thi khi yêu cầu là "GET" trong phân đoạn phản hồi.
Ví dụ 2
Ví dụ sau đây cho thấy nhiều bước trong một đoạn:
<!-- api-platform/reference/examples/flow-segments/step-2.xml --> <ProxyEndpoint name="default"> <PostFlow name="PostFlow"> <Response> <Step> <Name>Assign-Message-1</Name> </Step> <Step> <Name>Assign-Message-2</Name> </Step> </Response> </PostFlow> ... </ProxyEndpoint>
Các bước không có điều kiện luôn được thực thi.
Thuộc tính
Phần tử <Step> không có thuộc tính nào.
Phần tử con
Bảng sau đây mô tả các phần tử con của <Step>:
| Phần tử con | Loại | Mô tả |
|---|---|---|
<Condition> |
Chuỗi | Xác định một câu lệnh có điều kiện cho bước được xử lý trong thời gian chạy. Nếu câu lệnh đánh giá là true, thì Edge sẽ thực thi bước này. Nếu câu lệnh đánh giá là false, thì Edge sẽ bỏ qua bước này. |
<Name> |
Chuỗi | Chỉ định mã nhận dạng của chính sách cần thực thi trong quy trình hiện tại. |