Google Cloud Tasks всегда устанавливает для HttpMethod значение GET при использовании HttpRequest в качестве типа полезной нагрузки.

В соответствии с этой документацией [https://cloud.google.com/tasks/docs/creating-http-target-tasks] должна быть возможность создавать задачи с типом «http_request» и «http_method», установленными на «POST», но поведение не является ожидаемым, если задача всегда создается с помощью метода «GET».

После возникновения этой проблемы при использовании клиентской библиотеки Python я решил попробовать API напрямую и проверить, была ли это проблема с библиотекой или с самим API.

Используя «Попробуйте этот API» на странице документации по продукту [https://cloud.google.com/tasks/docs/reference/rest/v2beta3/projects.locations.queues.tasks/create], я попытался создать аналогичные задачи, используя типы 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.

Вот что я получаю в своей очереди:

![Tasks in the queue.](https://drive.google.com/file/d/1cxWc43BiWDPOYekAmFMAcMZygG5dYmx6/view?usp=sharing)

Я считаю, что это ошибка, и поэтому я сообщаю об этом здесь с тегом google-apis-explorer, как рекомендовано на странице поддержки.

В любом случае, если бы кто-нибудь мог сказать мне, делаю ли я что-то не так или есть ли какой-либо обходной путь, я был бы очень признателен.

Спасибо!

Мне интересно вслух .... если вышеизложенное является вашим фактическим запросом, я не вижу никакого содержания в запросе. Например, ничего в task.httpRequest.body. Может быть, среда пытается быть умной, и если вы отправляете запрос REST с нулевой полезной нагрузкой, он преобразуется в запрос GET?

Kolban 22.05.2019 17:25

Хороший вопрос, @Kolban. К сожалению, это не так. Я тоже пробовал передать тело, и проблема остается. Но я обновил вопрос с ним для полноты. Спасибо!

Michel Nagme 22.05.2019 18:25
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
4
2
1 411
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спасибо за этот пост, это ошибка в существующем пользовательском интерфейсе облачных задач, и мы работаем над ее исправлением.

Тем временем правильный HTTP-метод задачи можно определить, выполнив следующую команду:

gcloud beta задачи описать

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

Приведенная выше команда покажет правильный метод HTTP для задачи.

Привет @Vinod Ramachandran, это действительно отличная новость! Поскольку задача на самом деле создается правильно, это решает мои проблемы. Я должен был проверить это сам, вместо этого я просто признал, что то, что было в пользовательском интерфейсе, было правильным... Спасибо!

Michel Nagme 05.06.2019 20:51

Привет @Vinod, я обнаружил, что тело не было передано должным образом. Я попытался зарегистрировать задачу, которую я передал: ``` { httpRequest: { httpMethod: 'POST', url: 'some_random_url', body: 'IkhlbGxvLCBXb3JsZCEi' } } ``` но команда gcloud beta tasks describe дает мне этот результат: ``` createTime: '2019-07-16T15:42:15Z' dispatchDeadline: 600 сек. Вид Z: BASIC ``` Я использую @google-cloud/tasks 1.2.0 модуль npm

ralphchan 16.07.2019 17:50

Другие вопросы по теме