Chính sách về chú thích

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

Bạn có thể sử dụng chính sách Flowchú thích để gọi một luồng được chia sẻ từ proxy API hoặc một luồng dùng chung khác.

Trong quy trình dùng chung, bạn sẽ tạo một trình tự gồm các bước mà bạn có thể sử dụng lại trong thời gian chạy từ nhiều nơi. Các bước này được triển khai dưới dạng chính sách, dưới dạng một proxy API. Chính sách Flowchú thích cung cấp cho bạn cách gọi luồng được chia sẻ từ proxy API và các luồng dùng chung khác. Phương thức này hoạt động như một lệnh gọi hàm trong ngôn ngữ lập trình truyền thống.

  • Ví dụ: giả sử bạn đã xây dựng một quy trình dùng chung với các tính năng bảo mật như xác minh khoá API, xác thực mã thông báo OAuth và bảo vệ biểu thức chính quy. Luồng dùng chung này đại diện cho quy ước của bạn để kiểm tra các yêu cầu đến. Khi sử dụng chính sách Flowchú thích, bạn có thể gọi luồng được chia sẻ đó từ nhiều proxy API.
  • Bạn có thể gọi một quy trình chung từ một quy trình khác bằng cách triển khai chính sách Chú thích luồng từ trong một quy trình chung.

Mẫu

Xác minh khoá API trong quy trình chia sẻ

Trong ví dụ này, một luồng dùng chung được dùng để thực hiện các tác vụ phổ biến liên quan đến bảo mật. Ở đây, quy trình dùng chung sẽ xác thực khoá API. Proxy API và các luồng dùng chung khác có thể sử dụng chính sách FlowChú thích để thực hiện lệnh gọi đến quy trình dùng chung này.

Định nghĩa về luồng chia sẻ sau đây bao gồm một chính sách Verify-API-Key được thực thi khi luồng được chia sẻ được gọi từ một chính sách FlowChú thích trong một proxy API.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SharedFlow name="default">
    <Step>
        <Name>Verify-API-Key</Name>
    </Step>
</SharedFlow>

Chính sách VerifyAPIKey trong luồng dùng chung trước đó sẽ truy xuất giá trị khoá và xác minh giá trị đó.

<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key">
    <DisplayName>Verify API Key</DisplayName>
    <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

Chính sách Flowchú thích sau đây (dùng trong một proxy API) sẽ gọi luồng được chia sẻ trước đó để xác minh khoá API. Gói luồng chia sẻ verify-apikey-shared (không hiển thị ở đây) định cấu hình luồng chia sẻ theo cách gói APIProxy định cấu hình proxy.

<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
    <DisplayName>Auth Flow Callout</DisplayName>
    <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle>
</FlowCallout>

Truyền tham số vào một luồng dùng chung

Ví dụ này minh hoạ cách truyền các tham số từ chính sách FlowAnnotation đến một quy trình dùng chung. Ở đây, chính sách FlowAnnotation gọi đến một luồng chung được thiết kế để thực hiện các hàm xử lý chuỗi phổ biến. Luồng chung bao gồm JavaScript liên kết đầu vào, viết thường hoặc cả hai. Chính sách Flowchú thích xác định các tham số chỉ định đầu vào, đầu ra của chuỗi và việc cần làm với đầu vào đó.

  1. Chính sách Flowchú thích String-Handler gọi luồng dùng chung, truyền các tham số chỉ định biến để lưu trữ đầu ra của luồng dùng chung, thao tác luồng dùng chung cần sử dụng và dữ liệu đầu vào cần sử dụng (ở đây là giá trị cố định kiểu chuỗi, nhưng cũng có thể là biến luồng). Các phần tử Parameter chỉ định tên và giá trị của các biến sẽ tạo thời gian chạy. Luồng dùng chung có thể truy xuất các biến này để sử dụng trong mã riêng.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler">
      <DisplayName>String Handler</DisplayName>
      <Parameters>
        <Parameter name="input">Gladys Kravitz</Parameter>
        <Parameter name="operations">concatenate tolowercase</Parameter>
        <Parameter name="outputVariable">string.handler.output</Parameter>
      </Parameters>
      <SharedFlowBundle>StringHandler</SharedFlowBundle>
    </FlowCallout>
    
  2. Luồng chia sẻ default sau đây bao gồm chính sách JavaScript SharedStringFunctions. Chính sách này sẽ thực thi khi luồng chia sẻ được gọi từ chính sách Flowchú thích.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. Trong luồng dùng chung, chính sách JavaScript SharedStringFunctions sau đây chỉ định tệp JavaScript SharedStringFunctions.js có mã cần thực thi.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="SharedStringFunctions">
      <DisplayName>SharedStringFunctions</DisplayName> <Properties/>
      <ResourceURL>jsc://SharedStringFunctions.js</ResourceURL>
    </Javascript>
  4. JavaScript sau, SharedStringFunctions.js, thực thi từ chính sách JavaScript SharedStringFunctions. Tập lệnh này truy xuất các giá trị từ các biến được tạo từ phần tử Parameter của chính sách FlowAnnotation.

    // Input value from the calling API proxy.
    var handledString = context.getVariable("input");
    // Variable to use for output from this script.
    var outputVariable = context.getVariable("outputVariable");
    // A space-separated list of things to do to the input string.
    // Convert to lower case to handle unintentional capitals in configuration.
    var operation = context.getVariable("operations").toLowerCase();
    
    // If "lowercase" was given as an operation, convert the input to lowercase.
    if (operation.includes("tolowercase")) {
        handledString = handledString.toLowerCase();
    }
    
    // If "concatenate" was given as an operation, concatenate the input.
    if (operation.includes("concatenate")) {
        handledString = handledString.replace(/\s+/g, '');
    }
    // Assign the resulting string to the output variable specified by
    // the calling API proxy.
    context.setVariable(outputVariable, handledString);
  5. Hoạt động thực thi sẽ chuyển ngược lại từ chính sách JavaScript, đến luồng được chia sẻ, sau đó đến chính sách FlowAnnotation trong proxy API ban đầu.

Tham chiếu phần tử

Dưới đây là các phần tử và thuộc tính mà bạn có thể thiết lập trong chính sách này:

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle>
</FlowCallout>

Thuộc tính <FlowAnnotation>

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">

Bảng sau đây mô tả các thuộc tính chung cho tất cả phần tử mẹ của chính sách:

Thuộc tính Nội dung mô tả Mặc định Sự hiện diện
name

Tên nội bộ của chính sách. Giá trị của thuộc tính name có thể chứa chữ cái, số, dấu cách, dấu gạch nối, dấu gạch dưới và dấu chấm. Giá trị này không được vượt quá 255 ký tự.

Nếu muốn, bạn có thể sử dụng phần tử <DisplayName> để gắn nhãn cho chính sách này trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng tên ngôn ngữ tự nhiên khác.

Không áp dụng Bắt buộc
continueOnError

Đặt thành false để trả về lỗi khi một chính sách không hoạt động. Đây là hành vi dự kiến đối với hầu hết các chính sách.

Đặt thành true để quá trình thực thi luồng tiếp tục ngay cả khi chính sách không thành công.

false Không bắt buộc
enabled

Đặt thành true để thực thi chính sách.

Đặt thành false để tắt chính sách này. Chính sách này sẽ không được thực thi ngay cả khi chính sách vẫn được đính kèm vào một quy trình.

đúng Không bắt buộc
async

Thuộc tính này không được dùng nữa.

false Không được dùng nữa

Phần tử <DisplayName>

Sử dụng cùng với thuộc tính name để gắn nhãn cho chính sách trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng tên khác theo ngôn ngữ tự nhiên.

<DisplayName>Policy Display Name</DisplayName>
Mặc định

Không áp dụng

Nếu bạn bỏ qua phần tử này, thì giá trị thuộc tính name của chính sách sẽ được sử dụng.

Sự hiện diện Không bắt buộc
Loại Chuỗi

Phần tử <SharedFlowBundle>

Chỉ định tên của luồng dùng chung để gọi. Giá trị của phần tử này phải giống với giá trị của thuộc tính tên của phần tử SharedFlowBundle mục tiêu.

<SharedFlowBundle/>

Trong ví dụ đơn giản nhất, bạn đặt tên của luồng dùng chung đang được gọi dưới dạng giá trị cho phần tử này. Tức là giá trị của phần tử này phải giống với giá trị thuộc tính name của luồng dùng chung.

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
Mặc định Không áp dụng
Sự hiện diện

Bắt buộc.

Loại Không áp dụng

Thuộc tính

Không nội dung nào.

Phần tử <Parameter>

Chỉ định một tham số và giá trị (hoặc nguồn giá trị) để truyền dưới dạng biến vào luồng dùng chung do chính sách này gọi.

Bằng cách sử dụng tham số, bạn có thể chỉ định một giá trị (hoặc một biến chứa giá trị) sẽ được truyền vào luồng dùng chung do chính sách gọi. Về mặt lý thuyết, điều này tương tự như việc chỉ định tham số trong lệnh gọi hàm. Giống như tham số hàm, giá trị của tham số FlowAnnotation có thể thay đổi dựa trên ngữ cảnh của lệnh gọi luồng dùng chung.

Thông số chú thích luồng chỉ hiển thị trong quá trình thực thi của luồng được chia sẻ.

Cú pháp

Bạn có thể sử dụng phần tử này với bất kỳ biểu mẫu cú pháp nào sau đây. Lưu ý rằng khi bạn sử dụng giá trị cố định, định dạng của giá trị mà bạn chỉ định sẽ phụ thuộc vào mã sử dụng giá trị đó.

<!- A literal value in an attribute. --/>
<Parameter name="parameter-name" value='parameter-value' />
<!- A reference to a variable in an attribute. --/>
<Parameter name="parameter-name" ref='source-variable-name' />
<!- A literal value in the element content. --/>
<Parameter name="parameter-name">parameter-value</Parameter>
<!- An reference to an attribute in the element content. --/>
<Parameter name="parameter-name">{source-variable-name}</Parameter>

Ví dụ:

Chính sách FlowChú thích String-Handler này truyền các tham số chỉ định vị trí lưu trữ đầu ra của luồng dùng chung và đầu vào nào sẽ được sử dụng. Các phần tử Parameter chỉ định tên và giá trị của các biến sẽ tạo thời gian chạy. Luồng dùng chung có thể truy xuất các biến này để sử dụng trong mã riêng.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler">
  <DisplayName>String Handler</DisplayName>
  <Parameters>
    <Parameter name="input">Gladys Kravitz</Parameter>
    <Parameter name="outputVariable">string.handler.output</Parameter>
  </Parameters>
  <SharedFlowBundle>StringHandler</SharedFlowBundle>
</FlowCallout>
Mặc định Không áp dụng
Sự hiện diện

Bắt buộc.

Loại Không áp dụng

Thuộc tính

Thuộc tính Nội dung mô tả Mặc định Sự hiện diện Loại
tên Tên của biến thời gian chạy để tạo bằng tham số này. Không nội dung nào. Bắt buộc. Chuỗi
giới thiệu

Biến chứa giá trị để sử dụng trong thời gian chạy. Hãy bỏ qua thuộc tính này nếu bạn đang chỉ định một giá trị cố định để sử dụng.

Không nội dung nào. Không bắt buộc. Chuỗi
value Giá trị để sử dụng trong biến thời gian chạy được tạo bằng tham số này. Hãy bỏ qua thuộc tính này nếu bạn đang chỉ định tên của một biến phải là nguồn giá trị. Không nội dung nào. Không bắt buộc. Chuỗi

Phần tử <Parameters>

Chỉ định tập hợp các phần tử <Parameter> để truyền dưới dạng biến vào quy trình dùng chung do chính sách này gọi.

Cú pháp

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
Mặc định Không áp dụng
Sự hiện diện

Không bắt buộc.

Loại Không áp dụng

Thuộc tính

Không nội dung nào.

Giản đồ

Biến luồng

Các biến luồng cho phép hành vi động của các chính sách và luồng trong thời gian chạy, dựa trên tiêu đề HTTP, nội dung thông báo hoặc ngữ cảnh luồng. Để biết thêm thông tin về biến Flow, hãy xem Tài liệu tham khảo về biến.

Biến Nội dung mô tả

apigee.edge.sharedflow.name

Phạm vi: Trong quá trình thực thi luồng dùng chung
Loại: Chuỗi
Quyền: Đọc

Giá trị của thuộc tính tên của luồng dùng chung.

apigee.edge.flowhook.name

Phạm vi: Trong quá trình thực thi luồng dùng chung được đính kèm với hook của luồng.
Loại: Chuỗi
Quyền: Đọc

Tên của hook flow.

Tham chiếu lỗi

Phần này mô tả các mã lỗi và thông báo lỗi được trả về, cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Bạn cần nắm được thông tin này nếu đang phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem Những điều bạn cần biết về lỗi chính sáchXử lý lỗi.

Lỗi thời gian chạy

Những lỗi này có thể xảy ra khi thực thi chính sách.

Mã lỗi Trạng thái HTTP Nguyên nhân Khắc phục
flow.SharedFlowNotFound 500 Luồng dùng chung không tồn tại hoặc luồng dùng chung tồn tại nhưng không được triển khai.

Lỗi triển khai

Không áp dụng

Chủ đề có liên quan