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 đó phụ thuộc vào điểm trong Luồng proxy API mà biến đó được truy cập. Thuộc tính này có sẵn trong mọi ngữ cảnh, trong khi một số đối tượng chẳng hạn 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 chuyển sang luồng lỗi: 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 có sẵn. Bạn sẽ không thể thiết lập tiêu đề phản hồi trên đối tượng response bằng chính sách JavaScript nếu đang ở trong luồng 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ể dùng để đặt tiêu đề phản hồi từ trong chính sách JavaScript, hoặc có thể truy cập trong các chính sách khác có thể sử dụng biến luồng.

Bạn có thể sử dụng AssignMessage chính sách để gán giá trị (chẳng hạn như tiêu đề) cho đối tượng phản hồi. Chỉ định Thông báo sẽ tự động xử lý việc chuyển đổi trong ngữ cảnh từ luồng yêu cầu/phản hồi sang luồng 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 bằng chính sáchMessageLogging. Nếu sử dụng đối tượng message, bạn có thể ghi nhật ký thông tin phản hồi một cách liền mạch sau cả điều kiện thành công và lỗi trong proxy.

Ví dụ

Trong quy trình 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 sẽ không có tác dụ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 của quy trình lỗi. (Lưu ý rằng trong một dấu vết, điều này được biểu thị một cách trực quan bằng các biến có dấu bằng cùng dấu gạch chéo trên đó.)

Để đặt tiêu đề phản hồi cho cả luồng thành công và luồng lỗi trong một chính sách, bạn có thể 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, đoạn mã như sau sẽ đặt tiêu đề lỗi/phản hồi trong mọi ngữ cảnh luồng:

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à chính sách này sẽ thành công vì message có sẵn trong mọi ngữ cảnh.