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 方法。
根据此文档 [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 方法。