Mengakses API backend dari klien Python

Jika ingin mengakses Cloud Endpoints API dari klien Python, Anda harus menggunakan Library Klien Python Google API. Jika API tidak memerlukan autentikasi apa pun, klien Anda dapat mengakses API seperti yang ditunjukkan pada kode contoh berikut:

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()

Pada kode contoh:

  • api_root adalah URL root frontend tempat metode API Anda diekspos. Biasanya, URL-nya adalah https://YOUR_PROJECT_ID.appspot.com/_ah/api dengan YOUR_PROJECT_ID mewakili Google Cloud
  • api adalah nama API.
  • version adalah versi API backend.

Mengakses API yang memerlukan Authentication

Jika API backend memerlukan autentikasi, Anda perlu menggunakan Library Klien Python Google API dan Library Klien OAuth2.0.

Klien Anda bisa mendapatkan otorisasi yang diperlukan dan mengakses API menggunakan kode yang mirip dengan berikut ini:

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)

Perhatikan bahwa SCOPE harus ditetapkan seperti yang ditunjukkan. Untuk mengetahui informasi tentang YOUR_CLIENT_ID dan YOUR_CLIENT_SECRET, lihat Membuat client ID.