如何在 SCDF httpclient(或 http-request)应用程序中使用 Kafka header 创建 HTTP header?

How to create HTTP header with Kafka header in SCDF httpclient (or http-request) app?

我正在尝试创建这样的测试流:time | oauth-processor | httpclient | log

在这个流中,我的 oauth-processor 获取一个令牌并将其存储在 kafka 消息 header 中。这个效果很好,我收到一条消息:

[
 payload=03/19/21 13:00:15, 
 headers={
  ... standard-headers ..., 
  ...
  OAuth={
    TokenType=bearer, 
    ExpiresIn=480, 
    AccessToken=myEncodedToken
  }
 }
]

然后我想将令牌放在 HTTP header 中进行身份验证,如下所示:

{
  'Content-Type':'application/json', 
  'Authorization':'bearer myEncodedToken'
}

这是我在命令行中使用 header-expression 属性 尝试的内容: --headers-expression={'Content-Type':'application/json', 'Authorization':#jsonPath(headers, \"$.OAuth.TokenType\").concat(\" \").concat(#jsonPath(headers, \"$.OAuth.AccessToken\"))}

但我无法使用 SpEL 创建有效的 JSON 字符串。

入门应用程序的文档很差,至于 SCDF 中的 SpEL(尤其是当我们必须转义字符时),我在互联网上找不到任何有用的东西

如果有任何帮助,我将不胜感激。谢谢

我找到了一个使用带有此行的属性文件的解决方案:

app.httpclient.headers-expression={'Content-Type':'application/json','Authorization' : headers.OAuth.Authorization}

SCDF 中的 SpEL 非常混乱...
有时需要使用#jsonPath,有时不需要...

不确定,但似乎逗号也破坏了命令行中的表达式