في نهاية سبتمبر ، حدث أكبر هاكاثون في العالم في قازان. تم إدراج هذا الحدث ، وفقًا لعدد المشاركين ، في كتاب غينيس للأرقام القياسية.
خلال هذه الساعات الـ 48 ، كلفنا بما يلي:
قم بتطوير تطبيق جوال أولي يسمح للركاب بطلب توصيل الطعام من المطاعم الموجودة في المدن على طول مسار القطار.
كلمات
بالطبع ، خلال هذا الحدث ، شاركنا في حل المهام الفرعية غير المتجانسة حول موضوعنا. لم نقض 48 ساعة في تعلم واجهة برمجة تطبيقات HERE وكتابة الاستعلامات الثلاثة المذكورة أعلاه.
في هذه المقالة ، أود أن أشارك تمامًا تجربة استخدام واجهة برمجة تطبيقات HERE المكتسبة خلال 48 ساعة بلا نوم ، وبشكل أكثر دقة ، كمطور مبتكر لبيثون وأنظمة موزعة على الشبكة للتفاعل مع الأنظمة الأخرى على الشبكة. لا تتظاهر المقالة بأنها ترجمة جميع وثائق HERE API ، فهي تصف التطبيق العملي فقط في حل مشكلاتنا.
مقدمة
من أجل تحسين تسليم الطلبات وتنفيذها في الوقت المحدد ، يجب أن يصل الناقل إلى المنصة في الوقت المحدد الذي يصل فيه القطار إلى المحطة. في هذا الصدد ، يجب على كل ساعي معرفة الحد الأدنى من الوقت اللازم لتسليم النظام. لحل هذه المشكلة ، كان من الضروري حساب الحد الأدنى لوقت السفر بين نقطتين (من المطعم إلى محطة السكك الحديدية). تم حساب المسار في القرية ، فيما يتعلق بذلك ، تقرر النظر في العديد من الخيارات ، وهي استخدام وسائل النقل العام وسيارة شخصية وقدميك للمشي.
أظهر تحليل واجهات برمجة التطبيقات (APIs) العامة أن طلبات REST التالية هي الأكثر ملاءمة لحل المشكلة:
يبدأ استخدام واجهة برمجة التطبيقات عن طريق التسجيل في قسم المطورين في الموقع الرسمي لإنشاء واستلام مفاتيح APP و APP CODE. يسمح لك مفتاح API المجاني بتنفيذ ما يصل إلى 250 ألف طلب شهريًا. صدقوني ، هذا يغطي جميع احتياجات hackathon.
أظهرت إحصائيات استخدام HERE API من خلال تطبيقنا لمدة 48 ساعة الأرقام التالية:

ممارسة
يحتوي كل طلب على الحقول التالية:
deplocation = A
العثور على وقت السفر باستخدام وسائل النقل العام
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'),
أود أن أشير إلى أنه في هذا الطلب ، يتم إعطاء الوقت باستخدام ISO 8601. تم تنفيذ وظيفة تحويل مدة الوقت المستلمة إلى ثوان iso8601toSec.
العثور على وقت السفر باستخدام المركبات الشخصية
url = f"https://route.api.here.com/routing/7.2/calculateroute.json" query = { 'waypoint0': deplocation, 'waypoint1': arrlocation, 'mode': 'fastest;car;traffic:enabled',
لا توجد مشاكل مع هذا الطلب بمرور الوقت ، حيث يتم إرجاعه في ثوانٍ.
العثور على وقت السفر باستخدام ساقيك (المشي)
url = f"https://route.api.here.com/routing/7.2/calculateroute.json" query = { 'waypoint0': deplocation, 'waypoint1': arrlocation, 'mode': 'fastest;pedestrian',
في هذا الطلب ، كما في المثال السابق ، لا توجد مشاكل مع الوقت ، فهي تُرجع في ثوانٍ.
النتائج
بناءً على هذه الطلبات ، حصلنا على ثلاث مرات اللازمة للانتقال من النقطة "أ" إلى النقطة "ب". وبعد حساب الحد الأدنى من الوقت ونوع الحركة منها ، حددنا المدة التي استغرقها الخروج قبل أن نصل إلى النقطة "ب" في الوقت المحدد.