Accesso alle API di backend dai client Python

Se vuoi accedere a un'API Cloud Endpoints da un client Python, devi utilizzare la libreria client Python delle API di Google. Se l'API non richiede alcuna autenticazione, il client può accedere all'API come mostrato nel seguente codice di esempio:

import pprint

from googleapiclient.discovery import build

def main():
  # Build a service object for interacting with the API.
  api_root = 'https://guestbook.appspot.com/_ah/api'
  api = 'guestbook'
  version = 'v0.2'
  discovery_url = '%s/discovery/v1/apis/%s/%s/rest' % (api_root, api, version)
  service = build(api, version, discoveryServiceUrl=discovery_url)

  # Fetch all greetings and print them out.
  response = service.greetings().list().execute()
  pprint.pprint(response)

  # Fetch a single greeting and print it out.
  response = service.greetings().get(id='9001').execute()
  pprint.pprint(response)

if __name__ == '__main__':
  main()

Nel codice di esempio:

  • api_root è l'URL radice di frontend a cui sono esposti i metodi API. Di solito, l'URL è https://YOUR_PROJECT_ID.appspot.com/_ah/api dove YOUR_PROJECT_ID rappresenta il tuo Google Cloud
  • api è il nome dell'API.
  • version è la versione dell'API di backend.

Accesso a un'API che richiede autenticazione

Se l'API di backend richiede l'autenticazione, devi utilizzare sia la libreria client Python delle API di Google sia la libreria client OAuth2.0.

Il client può ottenere l'autorizzazione richiesta e accedere all'API utilizzando un codice simile al seguente:

import argparse
import pprint
import sys

from googleapiclient import discovery
import httplib2
import oauth2client
from oauth2client import tools

CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
SCOPE = 'https://www.googleapis.com/auth/userinfo.email'
USER_AGENT = 'my-cmdline-tool/1.0'
OAUTH_DISPLAY_NAME = 'My Commandline Tool'

def main(argv):
  # Parse command line flags used by the oauth2client library.
  parser = argparse.ArgumentParser(
      description='Auth sample',
      formatter_class=argparse.RawDescriptionHelpFormatter,
      parents=[tools.argparser])
  flags = parser.parse_args(argv[1:])

  # Acquire and store oauth token.
  storage = oauth2client.file.Storage('guestbook.dat')
  credentials = storage.get()

  if credentials is None or credentials.invalid:
    flow = oauth2client.client.OAuth2WebServerFlow(
        client_id=YOUR_CLIENT_ID,
        client_secret=YOUR_CLIENT_SECRET,
        scope=SCOPE,
        user_agent=USER_AGENT,
        oauth_displayname=OAUTH_DISPLAY_NAME)
    credentials = tools.run_flow(flow, storage, flags)
  http = httplib2.Http()
  http = credentials.authorize(http)

  # Build a service object for interacting with the API.
  api_root = 'https://guestbook.appspot.com/_ah/api'
  api = 'guestbook'
  version = 'v0.2'
  discovery_url = '%s/discovery/v1/apis/%s/%s/rest' % (api_root, api, version)
  service = discovery.build(
      api, version, discoveryServiceUrl=discovery_url, http=http)

  # Fetch all greetings and print them out.
  response = service.greetings().list().execute()
  pprint.pprint(response)

  # Fetch a single greeting and print it out.
  response = service.greetings().get(id='9001').execute()
  pprint.pprint(response)

if __name__ == '__main__':
  main(sys.argv)

Tieni presente che SCOPE deve essere impostato come mostrato. Per informazioni su YOUR_CLIENT_ID e YOUR_CLIENT_SECRET, consulta Creazione di ID client.