<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
对 message
流变量及其属性的访问取决于访问它的 API 代理流中的点。它在所有上下文中都可用,而某些对象(例如 request
或 response
)则不可用。
使用场景
message
流变量的主要用例就是您的代理进入错误流时:request
和 response
流变量超出范围。
例如,在错误流中,response
对象不可用。如果位于错误流,您将无法使用 JavaScript 政策在 response
对象上设置响应标头。您可以改用以下任一方法:
这两个对象都在错误流中可用,并可用于在 JavaScript 政策中设置响应标头,也可在可以使用流程变量的其他政策中访问。
您可以使用 AssignMessage 政策将值(例如标头)分配给响应对象。“分配消息”会自动处理从请求/响应流到错误流的上下文中的开关。
message
变量的另一个用例是使用 MessageLogging 政策在 PostClientFlow 中记录响应数据。如果您使用 message
对象,则可以在代理中在成功和错误状况后无缝记录响应信息。
示例
在错误流中,您可以使用 error
或 message
设置 JavaScript 政策中的响应标头。例如:
context.setVariable('error.header.FOO-1', 'error_header');
或
context.setVariable('message.header.FOO-2', 'message_header');
但以下表达式不会正常运行:
context.setVariable('response.header.FOO-3', 'response_header');
在本例中,response
变量在错误流中超出范围。(请注意,在跟踪记录中,这将使用变量直观指示,其中使用等号加斜杠显示)。
如需在单个政策中为成功和错误流设置响应标头,您可以在 JavaScript 政策中使用 message
。例如:
<faultrules> <faultrule name="invalid_key_rule"> <step> <name>SetResponseHeaders</name> </step> <condition>(fault.name = "InvalidApiKey")</condition> </faultrule> </faultrules>
在政策中,如下所示的代码会在任何流上下文中设置错误/响应标头:
context.setVariable('message.header.FOO-1', 'the header value');
您可以对常规 ProxyResponse 流程重复使用此相同的政策,并且它将成功,因为 message
在所有上下文中均可用。