【问题标题】:IBM Cloud Code Engine: How to pass non-JSON data in ping subscription?IBM Cloud Code Engine:如何在 ping 订阅中传递非 JSON 数据?
【发布时间】:2021-03-24 02:55:05
【问题描述】:

我正在尝试将一些表单数据从Code Engine ping subscription 传递到我的应用程序。在创建命令中,我尝试了不同的方法来将数据作为 POST 请求的一部分传递,但是在触发 ping 事件时导致运行时参数错误。

  ibmcloud ce sub ping create -n tweety --destination twitterbot --path /tweet
      --schedule '07 4,8,13,17 * * *' --data 'SECRET_KEY=SET_YOUR_SECRET' 
  ibmcloud ce sub ping create -n tweety --destination twitterbot --path /tweet
      --schedule '07 4,8,13,17 * * *' --data '{"SECRET_KEY":"SET_YOUR_SECRET"}' 

如何将数据作为常规文本数据而不是 JSON 传递?

【问题讨论】:

    标签: ibm-cloud ibm-cloud-code-engine


    【解决方案1】:

    我花了一段时间才弄明白。 The CLI command allows to pass --content-type。在文档中是示例 application/json。对于常规数据,它将是表单数据和 urlencoded。以下工作,即使用 application/x-www-form-urlencoded

     ibmcloud ce sub ping create -n tweety --destination twitterbot --path /tweet
         --schedule '07 4,8,13,17 * * *' --data 'SECRET_KEY=SET_YOUR_SECRET' 
         --content-type 'application/x-www-form-urlencoded'
    

    【讨论】:

      【解决方案2】:

      CLI 现在确实支持非 json:

      ibmcloud ce sub ping create -n pinger --data "hello" -d myapp

      将导致身体出现这种情况:

      你好

      【讨论】:

      • 我需要发送一个键/值对,而不仅仅是一个值。像上图所示发送它不会产生正确的表单类型数据。
      • 您可以在该字符串中放入任何您想要的内容,并且它应该将其传递,原封不动。因此,如果您希望它看起来像 JSON,则将其设为 JSON。当然,正如您之前提到的,如果您想设置 content-type 标头,那么您还需要使用 --content-type 选项,但是 w.r.t.你应该能够让它看起来像你想要的任何身体。通过 --data-base64 选项包含二进制文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      相关资源
      最近更新 更多