2016-03-29 4 views
0

У меня возникли проблемы с пониманием концепции «открытия API», используемой в продуктах и ​​услугах Google. Вот некоторые Python код, который использует указанную услугу открытия доступа к Google Cloud Зрение:Что такое Google API Discovery?

from googleapiclient.discovery import build 
from oauth2client.client import GoogleCredentials 
… 
API_DISCOVERY_FILE = 'https://vision.googleapis.com/$discovery/rest?version=v1' 
hlh = httplib2.Http() 
credentials = GoogleCredentials.get_application_default().create_scoped(
    ['https://www.googleapis.com/auth/cloud-platform']) 
credentials.authorize(hlh) 
service = build(serviceName='vision', version='v1', http=hlh, discoveryServiceUrl=API_DISCOVERY_FILE) 
service_request = service.images().annotate(body={ <more JSON code here> }) 

Вот еще один фрагмент кода Python, который также получает доступ к Google Cloud Vision, но не использует обнаружение API и работает просто отлично:

import requests 
… 
ENDPOINT_URL = 'https://vision.googleapis.com/v1/images:annotate' 
response = requests.post(ENDPOINT_URL, 
    data=make_image_data(image_filenames), 
    params={'key': api_key}, 
    headers={'Content-Type': 'application/json'}) 

Что я не могу обернуть вокруг этого вопроса: вам нужно знать детали API, которые вы собираетесь звонить, чтобы вы могли адаптировать вызов; это очевидно. Итак, как бы обнаружение API помогло вам во время вызова, после того, как вы уже подготовили код для вызова этого API?

PS: Я смотрю на следующие ресурсы до публикации этого вопроса:
https://developers.google.com/discovery/v1/getting_started
https://developers.google.com/discovery/v1/using
Я видел this ответил на вопрос, но хотел бы получить дополнительную проницательность.

+1

Теперь переключите версии API, динамически. Путь обнаружения потенциально перенаправит вас на другой URL-адрес, если Google почувствует, что это необходимо для новой версии. Ваш жесткий путь URL-адреса, с другой стороны. –

+0

@MartijnPieters Спасибо. Я вижу, поэтому служба обнаружения помогает с изменениями конечных точек. Предоставляет ли он информацию об изменениях в формате вызова API? (Необходимые аргументы, характер возвращаемого значения.) – Sabuncu

+0

Я не знаю, я не изучил их API обнаружения в глубину. Это, безусловно, указывает на то, что открытость API-интерфейсов является целью; например вы должны создать какой-то графический интерфейс, который позволит вам изучить API, предлагаемые Google с помощью API-интерфейсов обнаружения. Однако, насколько подробно предоставлен API, я не изучал. –

ответ

1

Примечание: Мне не хватает знания API Google, о котором вы упоминаете.

Вам необходимо знать детали API, которые вы собираетесь звонить , чтобы вы могли настроить вызов; это очевидно.

Теоретически для меня это требуется только для самого первого вызова, который был бы вызовом стартовой службы, которая, например, перечислила бы ряд ресурсов. Оттуда вы можете иметь ветки к основным ресурсам и их разрешенные методы (глаголы, если хотите). Таким образом, этот пример иллюстрирует структуру, подобную дереву. Если вы предоставляете графический интерфейс для навигации по этой возможности обнаружения общим способом, человек сможет решить, что делать.

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

+0

Большое спасибо за то, что нашли время, чтобы ответить на этот вопрос; ваше понимание очень ценится. – Sabuncu

+0

Посмотрите на это, чтобы получить более подробные ответы. http://programmers.stackexchange.com/questions/170695/what-is-the-need-for-discoverability-in-a-rest-api-when-the-clients-are-not-ad –

+0

Еще одно огромное спасибо вы - обсуждение в этой ссылке - именно то, что я был после. Как вы также заявляете, «первый вызов API» должен быть адаптирован для человека, но, следуя этому, API открытия держит вашу руку и облегчает взаимодействие.По крайней мере, это то, что я понимаю. – Sabuncu

Смежные вопросы