如何在使用 Cloud Scheduler 发出的 HTTP POST 请求上添加 JSON 正文?它会添加“Content-Type”:“application/json”标头吗?
Posted
技术标签:
【中文标题】如何在使用 Cloud Scheduler 发出的 HTTP POST 请求上添加 JSON 正文?它会添加“Content-Type”:“application/json”标头吗?【英文标题】:How to add a JSON body on a HTTP POST request made with Cloud Scheduler? Will it add the "Content-Type": "application/json" header? 【发布时间】:2021-05-02 04:49:25 【问题描述】:当您在 Cloud Scheduler 中创建新的 cron 作业时:
我应该在body
字段中添加什么,以便传递参数值:
该字段的规范是什么?我应该在里面写JSON
吗?
假设我想传递这个JSON
对象:
"foo": "bar"
"Content-Type": "application/json"
是自动添加的吗?
【问题讨论】:
【参考方案1】:您可以在正文字段中提供您认为合适的信息。
至少在AppEngineAppTarget
的情况下,HttpTarget
的行为可能与documentation 中描述的headers
字段中所指示的相同,它们表明如果作业有主体, Cloud Scheduler 设置以下标头:
Content-Type:默认情况下,Content-Type 标头设置为“application/octet-stream”。可以通过在创建作业时将 Content-Type 显式设置为特定媒体类型来覆盖默认值。例如,Content-Type 可以设置为“application/json”。 ...
AFAIK,无法从 Google Cloud Web 控制台提供 Content-Type
或任何其他自定义标头,但如果需要,您可以使用 gcloud
CLI。请参阅relevant documentation。请特别注意OPTIONAL FLAGS
部分,以及其中的--headers
、--message-body
和--message-body-from-file
标志。您的命令应该类似于:
gcloud scheduler jobs create http job-name \
--schedule="0 */3 * * *" \
--uri="http://your.url.com" \
--http-method=POST \
--headers="Content-Type: application/json" \
--message-body="\"field1\":\"value1\",\"field2\":\"value2\""
请参阅此相关的 SO 问题 1 2,它们可能会有所帮助。
【讨论】:
非常感谢!不知道可以通过gcloud
添加标题。当您检查使用gcloud
创建的cron 作业并设置了一些headers
时怎么样。它们如何显示在 Cloud Scheduler 控制台上?我的意思是,如何验证哪些作业具有哪些标题?我猜gcloud
有某种--list
标志可能会记录所有这些细节。
欢迎您@cbdeveloper。老实说,我不知道 Google Cloud Web 控制台是否为这项工作提供了该级别的详细信息 - 我将深入研究它,但 gcloud
CLI 提供了可用于获取有关信息的 describe
和 list
命令一个特定的工作或列表,并且可以选择分别过滤、排序等你的工作。
再次感谢您。这很好用。我刚刚将标题标志更改为:--headers Content-Type=application/json
。他们真的应该在控制台中添加一个headers
配置。
是的,我想是的@cbdeveloper。
网页界面已添加标题以上是关于如何在使用 Cloud Scheduler 发出的 HTTP POST 请求上添加 JSON 正文?它会添加“Content-Type”:“application/json”标头吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Google Cloud Scheduler 设置基本身份验证
如果我的 Google Cloud Scheduler 作业失败,如何发送电子邮件提醒?
使用 Cloud Scheduler 触发 Cloud Functions 的 HTTP