C贸mo aprender API AQU脥 en poco tiempo

imagen alt
-呕D贸nde est谩s?
-Estoy aqui

A finales de septiembre, el hackat贸n m谩s grande del mundo tuvo lugar en Kaz谩n. Este evento, seg煤n el n煤mero de participantes, se incluy贸 en el Libro Guinness de los R茅cords.


Durante estas 48 horas, nos encargaron:

Desarrollar un prototipo de una aplicaci贸n m贸vil que permita a un pasajero pedir comida a domicilio en restaurantes ubicados en ciudades a lo largo de la ruta del tren.

Letras de canciones


Por supuesto, durante todo el evento, participamos en la resoluci贸n de subtareas heterog茅neas sobre nuestro tema. No pasamos las 48 horas aprendiendo la API HERE y escribiendo las tres consultas anteriores.


En este art铆culo, quiero compartir exactamente la experiencia de usar la API HERE obtenida durante estas 48 horas de insomnio, m谩s precisamente, como desarrollador junior de Python y sistemas distribuidos en la red para implementar la interacci贸n con otros sistemas en la red. El art铆culo no pretende ser la traducci贸n de toda la documentaci贸n de HERE API, solo describe la aplicaci贸n pr谩ctica para resolver nuestros problemas.


Introduccion


Para optimizar la entrega de las 贸rdenes y su ejecuci贸n a tiempo, el servicio de mensajer铆a debe llegar a la plataforma a la hora exacta en que el tren llega a la estaci贸n. En este sentido, cada servicio de mensajer铆a debe conocer el tiempo m铆nimo requerido para la entrega del pedido. Para resolver este problema, fue necesario calcular el tiempo m铆nimo de viaje entre dos puntos (desde el restaurante hasta la estaci贸n de ferrocarril). El camino se calcul贸 en el pueblo, en relaci贸n con esto, se decidi贸 considerar varias opciones, a saber, el uso del transporte p煤blico, un autom贸vil personal y sus pies para caminar.


El an谩lisis de las API p煤blicas mostr贸 que las siguientes solicitudes REST son m谩s adecuadas para resolver el problema:



El uso de la API comienza registr谩ndose en la secci贸n de desarrollador del sitio web oficial para generar y recibir las claves de ID de aplicaci贸n y C脫DIGO DE APLICACI脫N. La clave API gratuita le permite realizar hasta 250 mil solicitudes por mes. Cr茅eme, esto cubre todas las necesidades de un hackathon.


Las estad铆sticas del uso de la API HERE por nuestra aplicaci贸n durante 48 horas mostraron las siguientes cifras:



Practica


Cada solicitud contiene los siguientes campos:


deplocation = A #   arrlocation = B #   # ,      app_id = os.getenv('HERE_APP_ID') app_code = os.getenv('HERE_APP_CODE') 

Encontrar el tiempo de viaje usando el transporte p煤blico


 url = f"https://transit.api.here.com/v3/route.json" query = { 'dep': deplocation, 'arr': arrlocation, 'time': datetime.now().strftime('%Y-%m-%dT%H:%M:%S'), # ,     'app_id': app_id, 'app_code': app_code, 'routing': 'tt' #    } response = requests.get(url, params=query) data = response.json() status = data["Res"] if "Message" in status: print(status["Message"]) exit(-1) if "Connections" in status: route_dut_time = iso8601toSec( status["Connections"]["Connection"][0]["duration"] ) 

Me gustar铆a se帽alar que en esta solicitud, el tiempo se proporciona utilizando ISO 8601. Se implement贸 la funci贸n de convertir la duraci贸n del tiempo recibido a segundos iso8601toSec.



Encontrar el tiempo de viaje usando veh铆culos personales


 url = f"https://route.api.here.com/routing/7.2/calculateroute.json" query = { 'waypoint0': deplocation, 'waypoint1': arrlocation, 'mode': 'fastest;car;traffic:enabled', #       'app_id': app_id, 'app_code': app_code, 'departure': 'now' #   } response = requests.get(url, params=query) data = response.json() route_dur_time = data['response']['route'][0]['summary']['trafficTime'] 

No hay problemas con esta solicitud con el tiempo, regresa en segundos.



Encontrar el tiempo de viaje usando sus propias piernas (caminar)


 url = f"https://route.api.here.com/routing/7.2/calculateroute.json" query = { 'waypoint0': deplocation, 'waypoint1': arrlocation, 'mode': 'fastest;pedestrian', #   'app_id': app_id, 'app_code': app_code } response = requests.get(url, params=query) data = response.json() route_dur_time = data['response']['route'][0]['summary']['travelTime'] 

En esta solicitud, como en el ejemplo anterior, no hay problemas con el tiempo, regresa en segundos.


Conclusiones


En base a estas solicitudes, obtuvimos tres veces la necesidad de pasar del punto A al punto B. Habiendo calculado el tiempo m铆nimo y el tipo de movimiento desde ellos, determinamos cu谩nto tiempo tard贸 en salir antes de que pudi茅ramos llegar al punto B en el tiempo indicado.

Source: https://habr.com/ru/post/470347/


All Articles