Saltar al contenido principal
Como parte del escenario de arquitectura de servidor + API, explicaremos cómo implementar el proceso de servidor en Python. Consulta el documento del escenario de arquitectura de servidor + API para obtener más información sobre la solución implementada. El código fuente completo de la implementación en Python del proceso de servidor se encuentra en este repositorio de GitHub.

Obtener un token de acceso

Para realizar la solicitud HTTP al endpoint de la API /oauth/token de Auth0, usaremos las bibliotecas json, urllib y urllib2. Esta es una implementación de ejemplo: Para probarlo, modifica tu código para imprimir la variable access_token y ejecuta el proceso con python cron.py.

Invocar la API

Los pasos que seguimos en nuestra implementación son:
  • Crear un objeto JSON que contenga los datos del registro de horas y asignarlo a una variable timesheet.
  • Añadir la URL de la API y el contenido de la variable timesheet al cuerpo de la solicitud con urllib2.Request.
  • Añadir el encabezado Authorization a la solicitud.
  • Establecer el encabezado Content-Type en application/json.
  • Invocar la API con urllib2.urlopen y agregar manejo de errores. Recuperar la respuesta con json.loads e imprimirla en la consola.
Esta es nuestra implementación de ejemplo (se omite parte del código por brevedad):
def main():
  # importar bibliotecas - código omitido

  # Valores de configuración - código omitido

  # Obtener un token de acceso de Auth0 - código omitido

  #Enviar nuevo registro de horas a la 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)

# Código estándar para llamar a la función main() - código omitido
Para probarlo, asegúrate de que tu API esté en ejecución y ejecuta el proceso con python cron.py. ¡Eso es todo! ¡Ya terminaste!