【问题标题】:attributes.headers getting lost after a http Request call in Mulesoft?在 Mulesoft 中调用 http 请求后,attributes.headers 会丢失吗?
【发布时间】:2021-03-08 16:48:50
【问题描述】:

我在 API 中获取了一些属性,但在 mule4 中的 HTTP 请求连接器之后所有属性都丢失了。 为什么会这样?

【问题讨论】:

  • 是的,正如@aled 提到的。当 Mule 跨越传输障碍(HTTP 请求、JMS、Web 服务等)时,这就是它应该如何在 Mule 中工作的方式。如果您想存储它以供进一步使用,则必须使用vars.whateverField 将这些字段/值存储在变量中。链接很老,但它应用了相同/相似的概念。请通过stackoverflow.com/questions/28668943/…阅读

标签: mule mule-studio mulesoft mule4


【解决方案1】:

查看连接器的配置属性 -> 连接器配置的高级选项卡(在本例中为 HTTP 连接器的“请求”操作),您会发现 目标变量目标值。如果您用名称填写目标 - 这会丰富内容以避免覆盖 Mule 消息。如果您将其留空(默认),它会将消息(属性、有效负载)保存在现有消息的顶部 - 这就是您现在所看到的。这反映了旧的 mule 3 功能,但有时您希望它保留您所拥有的东西。

因此,对于 目标值,您可以准确选择要保存的内容。如果您只想要有效负载:把它放进去。如果您想要有效负载和属性 - 我会使用“消息”因为这意味着您可以将有效负载和属性都保存在变量中。当然,您可能不想保存那么多,所以请随意放入您喜欢的任何 dataweave 表达式 - 这样您甚至可以使用来自任何地方的位创建一些东西,例如:

{
    statusCode: attributes.statusCode,
    headers: attributes.headers,
    payload: payload
}

【讨论】:

    【解决方案2】:

    连接器操作可以用操作的属性替换属性。如果您需要保留以前的属性,则需要将它们保存到变量中。

    【讨论】:

      【解决方案3】:

      这是 MuleSoft 的默认行为。每当请求越过传输障碍时,它就会丢失现有属性。您需要在 HTTP 请求之前保留属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        相关资源
        最近更新 更多