如何在 Spring 云数据流处理器 "http-request" 中指定 headers-expression?

How to specify headers-expression in Spring Cloud Data Flow processor "http-request"?

我们在使用 SCDF 预建处理器“http-request”调用外部服务时试图通过基本身份验证header。据我了解,消息 http headers 不会在调用时自动结转,我们需要填充 "headers-expression" 属性反而。以下是流定义的调用处理器步骤:

http-request --body-expression=payload
--url-expression='headers.reportURL' --http-method-expression='headers.httpMethod' --headers-expression='headers.Authorization'

我们已经将消息 header“Authorization”设置为“Basic ”,因此当消息到达“[=46=”时,“headers.Authorization”具有正确的基本身份验证 header 值]" 处理器。但是,这不起作用,流日志有以下错误:

org.springframework.expression.spel.SpelEvaluationException: EL1001E: 类型转换问题,无法在 org.springframework.expression.spel.support.StandardTypeConverter.convertValue(StandardTypeConverter.java:75 处从 java.lang.String 转换为 java.util.Map ) 在 org.springframework.expression.common.ExpressionUtils.convertTypedValue(ExpressionUtils.java:57)

从错误消息来看,我们似乎需要传递地图?像“授权:headers.Authorization”之类的东西? (通过这种方式编码甚至无法成功部署流)。我们不想 hard-code “headers.Authorization” 作为文字 Basic Auth base64 字符串。还有如何在“headers-expression[=35=中指定多个header(比如添加“content-type”) ]”?我们已经搜索了 SCDF 文档和在线,但似乎找不到如何执行此操作的示例。

谢谢。

如果您说您已经预先设置了那些 headers,请考虑这样的表达式:--headers-expression='headers'. The headersproperty of theMessageis aMap ` 本身。

如果仍然不符合您的要求,请考虑对 SpEL 使用 in-line map 语法:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions-inline-maps