Passer au contenu principal
Dans le cadre du scénario d’architecture Serveur + API, nous expliquerons comment implémenter le processus du serveur dans Python. Veuillez vous référer au document Scénario d’architecture Serveur + API pour obtenir des informations sur la solution implémentée. Le code source complet de l’implémentation Python se trouve dans ce référentiel GitHub.

Obtenir un jeton d’accès

Pour effectuer la requête HTTP vers le point de terminaison Auth0 /oauth/token de l’API, nous utiliserons les bibliothèques jsonurllib et urllib2. Voici un exemple d’implémentation : Pour la tester, modifiez votre code pour imprimer la variable access_token et exécutez le processus en utilisant python cron.py.

Invoquer l’API

Les étapes que nous suivons pour l’implémentation sont les suivantes :
  • Créer un objet JSON contenant les données de la feuille de temps et affectez-le à une variable timesheet.
  • Ajoutez l’URL de l’API et le contenu de la variable timesheet au corps de la requête en utilisant urllib2.Request.
  • Ajouter l’en-tête Authorization à la requête.
  • Définir l’en-tête Content-Type sur application/json.
  • Invoquer l’API en utllisant urllib2.urlopen et ajouter des fonctions de gestion des erreurs. Récupérer l’API en utilisant json.loads  et imprimez-la dans la console.
Voici un exemple d’implémentation (certains codes sont omis par souci de concision) :
def main():
  # import libraries - code omitted

  # Configuration Values - code omitted

  # Get an Access Token from Auth0 - code omitted

  #Post new timesheet to API
  timesheet = {'user_id': '007',
                          'date': '2017-05-10T17:40:20.095Z',
                          'project': 'StoreZero',
                          'hours': 5}
  req = urllib2.Request(api_url, data = json.dumps(timesheet))
  req.add_header('Authorization', 'Bearer ' + access_token)
  req.add_header('Content-Type', 'application/json')

  try:
    response = urllib2.urlopen(req)
    res = json.loads(response.read())
    print 'Created timesheet ' + str(res['id']) + ' for employee ' + str(res['user_id'])
  except urllib2.HTTPError, e:
    print 'HTTPError = ' + str(e.code) + ' ' + str(e.reason)
  except urllib2.URLError, e:
    print 'URLError = ' + str(e.reason)
  except httplib.HTTPException, e:
    print 'HTTPException'
  except Exception, e:
    print 'Generic Exception' + str(e)

# Standard boilerplate to call the main() function - code omitted
Pour la tester, assurez-vous que votre API est en cours d’exécution et lancez le processus en utilisant python cron.py. C’est tout! Vous avez terminé!