وتوتو هو إطار صغير يهدف إلى تسريع التنمية الخادم API. هو مبني على رأس تورنادو، ويمكن أن تستخدم حاليا إما الخلية أو مونغو دي بي كقاعدة بيانات الدعم.
تركيب
إن أبسط طريقة لتثبيت توتو هي مع نقطة. ببساطة تشغيل نقطة تثبيت بوابة -e + بوابة: //github.com/JeremyOT/Toto.git#egg=Toto لتثبيت أحدث نسخة من وحدة توتو على جهازك.
استعمال
بدء العمل مع توتو من السهل، كل ما عليك القيام به هو جعل مثيل جديد من toto.TotoServer وندعو المدى (). توتو يحتاج إلى وحدة الجذرية لاستخدام لطريقة البحث. افتراضيا، فإن TotoServer بحث عن وحدة تسمى الأساليب. يمكن استخدام المعلمة method_module لتحديد وحدة أخرى بالاسم.
ترتيب
افتراضيا، يتم تكوين توتو لتشغيل على المنفذ 8888 والاتصال إلى ملقم مونغو دي بي يعمل على المضيف المحلي. التكوين لا يمكن أن يؤديها من خلال ثلاث طرق مع بعضها تجاوز الاخير:
1. عن طريق تمرير خيارات كمعلمات اسمه إلى منشئ TotoServer.
2. من خلال ملف التكوين عن طريق تمرير المسار إلى ملف التكوين كمعلمة الأول إلى منشئ TotoServer.
3. مع معلمات سطر الأوامر (--option = 'قيمة السلسلة "--option = 1234)
ويمكن الجمع بين أساليب التكوين يكون من المفيد عند التصحيح. تشغيل البرنامج النصي الخاص بك مع --help لرؤية قائمة كاملة من المعلمات المتاحة.
طرق
يتم الرجوع إليها طرق بالاسم في كل طلب. a.b.c (أو أ / ب / ج) خرائط لmethods.a.b.c. لإضافة أساليب جديدة، إضافة وحدات وحزم لأساليب (أو معين) حزمة (انظر حزمة حساب للمرجعية) والتأكد من أن كل وحدة للاستدعاء تعرف استدعاء (معالج، المعلمات) حيث معالج هو TotoHandler (فئة فرعية من tornado.web. RequestHandler) التعامل مع الطلب الحالي.
يوفر handler.connection.db الوصول المباشر إلى قاعدة البيانات المستخدمة من قبل إطار جلسات والحسابات.
يوفر handler.session الوصول إلى الدورة الحالية أو لا أحد إن لم يكن المصادقة. الخصائص المتوفرة:
- session.user_id - هوية المستخدم الحالي
- session.expires - الطابع الزمني يونكس عندما تنتهي الدورة
- session.session_id - معرف جلسة الحالي
- session.state - لديكت الثعبان الذي يحتوي على الحالة الراهنة، يجب استدعاء session.save_state () أن تستمر أي تغييرات
لفرض المصادقة لأي طريقة، تزيين وظيفة استدعاء و() مع @ toto.invocation.authenticated. سوف المحاولات غير المشروعة لاستدعاء الأساليب مصادقة بإرجاع خطأ غير مخول.
يمكن تحديد المعلمات المطلوبة عن طريق تزيين وظيفة استدعاء و() مع @ toto.invocation.requires (param1، param2، ...).
يمكن وحدات طريقة الاستفادة من الميزات عدم عرقلة تورنادو من خلال تزيين وظيفة استدعاء و() مع @ toto.invocation.asynchronous. عندما عملية غير متزامنة كاملة يجب استدعاء handler.finish () من أجل الانتهاء من الطلب. ويمكن إرسال البيانات إلى العميل مع handler.write () وhandler.flush (). اختياريا، يمكن تنفيذ وحدات on_connection_close () لتنظيف أي الموارد إذا كان العميل إغلاق الاتصال. انظر RequestHandler.on_connection_close () في وثائق تورنادو لمزيد من المعلومات.
من المهم أن نتذكر أن تورنادو يتطلب أن جميع المكالمات للكتابة ()، دافق () والنهاية () يتم تنفيذها على الترابط الرئيسي. يمكنك جدولة وظيفة لتشغيل على الترابط الرئيسي مع IOLoop.instance (). add_callback (رد).
ملاحظة: إرجاع أي بيانات من استدعاء method.invoke () سيتم إرسالها إلى العميل عن بيانات JSON واستخدامها لتوليد رأس X-توتو-HMAC للتحقق منها. قد يسبب هذا مشاكل مع أساليب غير متزامن. إذا method.invoke () إرجاع لا أحد، لن يكون تلقائيا إرسال استجابة إلى العميل وسيتم إنشاء أي رأس X-توتو-HMAC.
طلبات
غير الموثق الأساليب:
1. خدمة الدعوة مع كائن JSON في شكل: {"طريقة": "اي بي سي"، "المعلمات": <المعلمات>}. بدلا من تمرير "طريقة" حجة في الجسم الطلب، فمن الممكن أيضا أن استدعاء الأساليب التي كتبها URL. أي ما يعادل URL للدعوة المذكورة أعلاه هو http://service.com/service/a/b/c.
2. تحليل استجابة JSON.
إنشاء حساب:
1. دعوة طريقة account.create مع {"USER_ID":
2. تحقق من أن ترميز Base64 HMAC-SHA1 من الجسم استجابة مع
3. تحليل استجابة JSON.
4. قراءة وتخزين session_id من الكائن استجابة.
تسجيل دخول:
1. دعوة طريقة account.login مع {"USER_ID":
2. تحقق من أن ترميز Base64 HMAC-SHA1 من الجسم استجابة مع
3. تحليل استجابة JSON.
4. قراءة وتخزين session_id من الكائن استجابة.
أساليب المصادقة:
1. تسجيل الدخول (انظر من أعلاه).
خدمة 2. دعوة مع كائن JSON في شكل: {"طريقة": "اي بي سي"، "المعلمات": <المعلمات>} مع رأس X-توتو الدورة معرف لتعيين معرف جلسة عادت من تسجيل الدخول وX- رأس توتو HMAC لتعيين base64 ترميز HMAC-SHA1 ولدت مع
3. تحقق من أن ترميز Base64 HMAC-SHA1 من الجسم استجابة مع
4. تحليل استجابة JSON.
ملاحظة: تفترض هذه الإرشادات التي method.invoke () بإرجاع كائن إلى إجراء تسلسل وإرسالها إلى العميل. الأساليب التي تعود لا أحد يمكن استخدام إرسال أي بيانات ويجب التعامل وفقا لذلك.
أحداث
في بعض الأحيان قد تحتاج إلى إرسال الأحداث من طلب واحد إلى آخر. toto.events.EventManager توتو يجعل هذا سهلا.
لإرسال EventManager.instance استخدام الحدث () أرسل ('eventname "، وسائط). يستخدم EventManager حدة cPickle الثعبان لالتسلسل حتى تتمكن من تمرير أي شيء cPickle يمكن التعامل مع مثل وسائط.
لاستقبال هذا الحدث، يجب عليك تسجيل معالج مع EventManager.instance (). register_handler ('eventname "، معالج). المعالج هو دالة التي تأخذ معلمة واحدة وسوف يطلق مع وسائط عندما يرسل EventManager حدث مع "eventname". وقد صممت الأحداث توتو في المقام الأول أن يكون جنبا إلى جنب مع دعم اعصار لطلبات غير مؤمن. انظر قالب "دردشة" على سبيل المثال.
نظام الحدث توتو يدعم إرسال الأحداث عبر مثيلات متعددة سواء على نفس الجهاز ونظام توزيعها. تشغيل الخادم الخاص بك مع --help لمزيد من خيارات التكوين
Daemonization
يمكن تشغيل خادم توتو باعتباره الخفي عن طريق تمرير الحجة --daemon = البداية. لوقف أي عمليات تشغيل تمر --daemon = توقف. هذا وسوف إيقاف أية عمليات التي تشترك في تنسيق ملف معرف المنتج المحدد (toto.pid الافتراضي). و--processes = يمكن استخدام الخيار لتحديد عدد من مثيلات الملقم لتشغيل. سيتم تشغيل مثيلات متعددة على منافذ تسلسلية بدءا من ميناء المحدد من قبل --port. إذا تم استخدام 0 كما الوسيطة إلى --processes، سيتم تشغيل توتو عملية واحدة في وحدة المعالجة المركزية كما الكشف عنها من قبل وحدة المعالجة المتعددة بايثون. خيارات daemonization إضافية يمكن أن ينظر من --help.
عملاء
لمساعدتك على البدء، والمكتبات العميل جافا سكريبت ودائرة الرقابة الداخلية هي في التنمية على https://github.com/JeremyOT/TotoClient-JS وhttps://github.com/JeremyOT/TotoClient-iOS على التوالي.
الميزات:
يستخدم JSON للاستهلاك السهل من قبل عملاء على أي منصة
سهلة لإضافة أساليب جديدة
المصادقة بسيطة بنيت في مع HMAC-SHA1 التحقق لطلبات المصادقة
استمرار حالة جلسة لطلبات موثقة
جلسات المخزنة في قاعدة بيانات لتبسيط التوسع عبر ملقمات
المتطلبات:
بيثون
لم يتم العثور على التعليقات