GCP: имя ресурса против URL: несогласованное соответствие

Для имени ресурса найдите соответствующий URL-адрес HTTP-восстановления.

С помощью приведенного ниже документа Google для некоторых ресурсов сопоставление имени с URL-адресом работает нормально.

Пример:

Обычно добавление схемы HTTPS перед именем и основной версии API перед путем к ресурсу отлично работает.

Но проблема в том, что эта схема преобразования несовместима для некоторых ресурсов, если мы формируем URL с таким подходом, он будет отличаться от фактического URL

Пример:

Справочник по API Compute Engine: https://cloud.google.com/compute/docs/reference/rest/v1

Другие ресурсы, помимо вычислений, также имеют фактически отличный URL от сгенерированного с использованием вышеуказанного метода.

Запросы бывают:

  1. Помимо упомянутого способа, есть ли способ сопоставить имена ресурсов с URL-адресом
  2. Каковы лучшие практики такого преобразования
  3. Помимо ручного сопоставления каждого имени с URL-адресом, есть ли какой-либо общий способ
  4. Есть ли какой-либо API, который предоставляет это сопоставление, например, pass, будет возвращено имя ресурса и URL-адрес для него (в Интернете я не нашел его)

person Prafull Pol    schedule 30.10.2020    source источник


Ответы (1)


В API Google есть документ обнаружения.

В этом файле JSON есть 2 поля, подходящих для этого вопроса: rootUrl и servicePath.

Чтобы создать правильный URL-адрес для API, объедините оба значения.

Дополнительные сведения см. В документах службы обнаружения.

person Jofre    schedule 30.10.2020
comment
После тщательного изучения службы обнаружения в течение некоторого времени, столкнувшись с проблемой несоответствия. 1. Ответ службы обнаружения действительно долгий, если нас интересует только один метод REST. 2. В соответствии с документацией частичный ответ будет решением этой проблемы. 3. Частичный ответ не работает должным образом со всеми ресурсами, которые я пробовал 4. Прекрасно работает со службой обнаружения: googleapis.com/discovery/v1/apis/compute/v1/ 5. Не работает с диспетчером ресурсов: cloudresourcemanager.googleapis.com/$discovery/. - person Prafull Pol; 04.11.2020
comment
Похоже, что это не работает должным образом. Вы можете поднять вопрос в Google: issueetracker.google.com/issues/ Предоставленные библиотеки (developers.google.com/ api-client-library) загрузите весь документ обнаружения и кэшируйте его локально, чтобы не получать его каждый раз. - person Jofre; 04.11.2020