Методы API GCP: пустое тело запроса vs {}?
Некоторые методы GCP API требуют пустого тела запроса, другие требуют {} в теле. Я не могу понять какой-либо шаблон.
Примеры методов, которые требуют пустого тела запроса и возвращают ошибку, если вызваны с помощью {}:
Примеры методов, которые требуют {} в теле и возвращают ошибку, если вызваны с пустым телом:
https://cloud.google.com/resource-manager/reference/rest/v1beta1/projects/getIamPolicy
https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics/create
Забавно, что все четыре документа говорят, что тело запроса должно быть пустым! Для второй группы я бы сказал, что это ошибка: тело должно быть не пустым; Это должно быть {}.
Это довольно раздражает - похоже на случайную разницу между методами? Есть ли здесь какая-то рифма или причина? Разве методы body {} не могут принимать пустое тело?
Некоторые идеи, которые, кажется, не объясняют разницу:
Поскольку многие продукты используют IAM, эти функции могут иметь странное поведение. Но смотри выше -
getIamPolicy
отличается между продуктами.Различные продуктовые группы могут принять решение о разных местных соглашениях. Но смотрите выше - API pubsub имеет вызовы в каждом лагере.
1 ответ
Первые две ссылки, которыми вы поделились, являются HTTP GET
методы, которые не должны иметь тела, поскольку должны только извлекать данные, и вся информация может быть передана через URL и некоторые параметры запроса.
Две другие ссылки HTTP PUT
методы, которые ожидают, что полезная нагрузка обновит текущее содержимое данного объекта.
Вы можете найти больше объяснения о том, как методы HTTP определены в IETF RFC 2616, объясняя протокол HTTP.