Google 将 HttpRequest 用作 payload_type 时,Cloud Tasks 始终将 HttpMethod 设置为 GET

Google Cloud Tasks always set HttpMethod to GET when using HttpRequest as payload_type

根据此文档 [https://cloud.google.com/tasks/docs/creating-http-target-tasks ],应该能够创建类型为 'http_request' 且 'http_method' 设置为 'POST' 的任务,但行为并非如此任务总是使用方法 'GET'.

创建后的预期结果

在使用 Python 客户端库时遇到这个问题后,我决定直接尝试 API 并检查它是库问题还是 API本身。

使用产品文档页面 [https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues.tasks/create] 中的 "Try this API",我尝试使用 http_request 和 app_engine_http_request 类型创建类似的任务,并且始终将 http_method 设置为 POST。

如果我这样设置请求正文:

{
  "task": {
    "appEngineHttpRequest": {
      "httpMethod": "POST",
      "relativeUri": "/test",
      "body": "c2hhbGxvdyBub3c="
    }
  }
}

...任务已创建,方法是 POST,如预期的那样。但是,如果我将请求正文设置为:

{
  "task": {
    "httpRequest": {
      "httpMethod": "POST",
      "url": "https://httpstat.us/404",
      "body": "c2hhbGxvdyBub3c="
    }
  }
}

...任务已创建,但使用方法 GET 而不是 POST。

这是我在队列中得到的:

我认为这是一个错误,这就是为什么我按照支持页面的建议在此处使用标记 google-apis-explorer 报告它。

无论如何,如果有人能告诉我我是否做错了什么,或者在此期间是否有任何解决方法,我将不胜感激。

谢谢!

感谢您提供此 post,这是现有 Cloud Tasks UI 中的错误,我们正在修复此错误。

同时,可以通过 运行 以下命令确定任务的正确 HTTP 方法:

gcloud 测试版任务描述

https://cloud.google.com/sdk/gcloud/reference/beta/tasks/describe

以上命令将显示任务的正确 HTTP 方法。