4

根据此文档 [ 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 ] 中的“试用此 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。

这是我在队列中得到的:

![队列中的任务。](https://drive.google.com/file/d/1cxWc43BiWDPOYekAmFMAcMZygG5dYmx6/view?usp=sharing)

我相信这是一个错误,这就是为什么我在这里使用支持页面上推荐的标签 google-apis-explorer 报告它的原因。

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

谢谢!

4

1 回答 1

3

感谢您的这篇文章,这是现有 Cloud Tasks UI 中的一个错误,我们正在修复这个错误。

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

gcloud beta 任务描述

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

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

于 2019-06-04T17:09:39.517 回答