גישה לממשקי API של קצה עורפי מלקוחות Python

אם רוצים לגשת אל Cloud Endpoints API מלקוח Python, צריך להשתמש בספריית הלקוח של Google APIs Python. אם ה-API לא דורש אימות, הלקוח יכול לגשת ל-API כמו שמוצג בקוד הדוגמה הבא:

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

בדוגמה של הקוד:

  • api_root היא כתובת ה-URL הבסיסית של חזית האתר שדרכה נחשפות שיטות ה-API. בדרך כלל, כתובת ה-URL היא https://YOUR_PROJECT_ID.appspot.com/_ah/api כאשר YOUR_PROJECT_ID מייצג את Google Cloud
  • api הוא שם ה-API.
  • version היא הגרסה של ה-API של ה-Backend.

גישה לממשק API שנדרש אימות

אם נדרש אימות ל-API של ה-Backend, צריך להשתמש גם בספריית הלקוח של Google APIs Python וגם בספריית הלקוח של OAuth2.0.

הלקוח יכול לקבל את ההרשאה הנדרשת ולגשת ל-API באמצעות קוד שדומה לקוד הבא:

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)

שימו לב שצריך להגדיר את SCOPE כמו שמוצג. מידע על YOUR_CLIENT_ID ועל YOUR_CLIENT_SECRET זמין במאמר בנושא יצירת מזהי לקוח.