biến luồng tin nhắn

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

Quyền truy cập vào biến luồng message và các thuộc tính của biến này phụ thuộc vào điểm trong Luồng proxy API nơi truy cập API. Tính năng này có sẵn trong mọi ngữ cảnh, trong khi một số đối tượng, như request hoặc response thì không.

Trường hợp sử dụng

Trường hợp sử dụng chính cho biến luồng message là khi proxy của bạn nhập luồng lỗi: các biến luồng requestresponse nằm ngoài phạm vi.

Ví dụ: trong luồng lỗi, đối tượng response không xuất hiện. Bạn sẽ không có thể đặt tiêu đề phản hồi trên đối tượng response bằng chính sách JavaScript nếu bạn đang gặp lỗi. Thay vào đó, bạn có thể sử dụng một trong những cách sau:

Cả hai đối tượng này đều có trong luồng lỗi và có thể được dùng để đặt phản hồi tiêu đề trong một chính sách JavaScript hoặc có thể truy cập được trong các chính sách khác có thể sử dụng flow biến.

Bạn có thể dùng assignMessage chính sách để gán các giá trị, chẳng hạn như tiêu đề, vào đối tượng response (phản hồi). Gán tin nhắn sẽ tự động xử lý việc chuyển đổi trong ngữ cảnh từ quy trình yêu cầu/phản hồi đến quy trình lỗi.

Một trường hợp sử dụng khác cho biến message là ghi nhật ký dữ liệu phản hồi trong PostClientFlow có chính sách MessageLogging. Nếu sử dụng đối tượng message, bạn có thể ghi lại thông tin phản hồi liền mạch theo cả điều kiện thành công và lỗi trong proxy.

Ví dụ

Trong một luồng lỗi, bạn có thể đặt tiêu đề phản hồi trong một chính sách JavaScript bằng cách sử dụng error hoặc message. Ví dụ:

context.setVariable('error.header.FOO-1', 'error_header');

HOẶC

context.setVariable('message.header.FOO-2', 'message_header');

Tuy nhiên, biểu thức sau đây sẽ không hoạt động:

context.setVariable('response.header.FOO-3', 'response_header');

Trong trường hợp này, biến response nằm ngoài phạm vi trong luồng lỗi. (Lưu ý rằng, trong một dấu vết, điều này được biểu thị trực quan bằng các biến hiển thị với ký hiệu bằng có dấu gạch chéo.)

Để đặt tiêu đề phản hồi cho cả luồng thành công và lỗi trong một chính sách, bạn có thể sử dụng message bên trong chính sách JavaScript. Ví dụ:

<faultrules>
  <faultrule name="invalid_key_rule">
    <step>
      <name>SetResponseHeaders</name>
    </step>
    <condition>(fault.name = "InvalidApiKey")</condition>
  </faultrule>
</faultrules>

Trong chính sách này, mã như sau sẽ đặt tiêu đề lỗi/phản hồi trong bất kỳ ngữ cảnh luồng nào:

context.setVariable('message.header.FOO-1', 'the header value');

Bạn có thể sử dụng lại chính sách này trên quy trình ProxyResponse thông thường và việc này sẽ thành công vì message có sẵn trong mọi ngữ cảnh.