Toto API sunucu gelişimini hızlandırmak amacıyla küçük bir çerçevedir. Bu Tornado üstüne inşa edilmiş ve şu anda bir destek veritabanı olarak MySQL veya MongoDB kullanabilirsiniz.
Kurulum
Toto yüklemek için basit yolu pip ile. Basitçe Pip çalıştırmak -e budala budala + yükleyin: //github.com/JeremyOT/Toto.git#egg=Toto makinenizde Toto modülünün son sürümünü yüklemek için.
Kullanım
Toto ile Başlarken kolaydır, yapmanız gereken tüm) (toto.TotoServer yeni bir örneğini yapmak ve çalıştırmak aramak. Toto yöntemi arama için kullanmak üzere bir kök modülü ihtiyacı var. Varsayılan olarak, bir TotoServer bir modül olarak adlandırılan yöntemler arayacaktır. method_module parametre adı başka modül belirtmek için kullanılır.
Yapılandırma
Varsayılan olarak, Toto port 8888 üzerinde çalışan ve localhost üzerinde çalışan bir MongoDB sunucusuna bağlanmak için yapılandırıldı. Yapılandırma her geçen geçersiz kılma ile üç şekilde yapılabilir:
TotoServer kurucusuna adlandırılmış parametreleri gibi seçenekler geçerek 1..
TotoServer kurucusuna ilk parametre olarak yapılandırma dosyasının yolunu geçerek bir yapılandırma dosyası ile 2..
Komut satırı parametreleri ile 3. (--option = 'dize değeri' --option = 1234)
Ayıklarken yapılandırma yöntemleri birleştiren yararlı olabilir. Mevcut parametrelerin tam listesini görmek için --help ile komut dosyasını çalıştırın.
Yöntemler
Yöntem her istek adıyla başvurulur. a.b.c (ya da a / b / c) methods.a.b.c eşleştiren. Işleyici tornado.web ve TotoHandler (alt sınıf olduğu, yeni yöntemler eklemek yöntemler (ya da belirtilen) pakete modülleri ve paketleri eklemek için (referans için hesap paketine bakın) ve her çağrılabilir modül çağırmak (işleyici, parametreleri) tanımlar emin olun. Geçerli isteği işleme RequestHandler).
handler.connection.db oturumları ve hesapları çerçevesi tarafından kullanılan veritabanına doğrudan erişim sağlar.
doğrulanmış olmasa handler.session geçerli oturumda veya Hiçbiri erişim sağlar. Mevcut özellikler:
- Session.user_id - Geçerli kullanıcı kimliği
- Session.expires - Unix zaman damgası oturumu sona erecek zaman
- Session.session_id - Geçerli oturum kimliği
- Session.state - mevcut durumunu içeren bir piton dict, herhangi bir değişiklik devam etmek session.save_state () çağırması gerekir
@ Toto.invocation.authenticated ile çağırmak () işlevini süslemeleri, herhangi bir yöntemle için kimlik doğrulaması zorlamak için. Doğrulanmış yöntemleri çağırmak için yetkisiz girişimleri bir değil yetkili hata döndürecektir.
Gerekli parametreler @ toto.invocation.requires ile bir invoke () işlevini dekorasyon belirtilebilir (param1, param2, ...).
Yöntem modülleri @ toto.invocation.asynchronous ile bir invoke () işlevini dekorasyon ile Tornado dışı engelleme özelliklerinden yararlanabilirsiniz. Uyumsuz işlem tamamlandığında size isteği tamamlamak için () handler.finish çağırmanız gerekir. Veri handler.write () ve handler.flush ile müşteriye gönderilebilir (). İsteğe bağlı olarak, modüller istemci bağlantıyı kapatır varsa kaynaklarını temizlemek için () on_connection_close uygulayabilirsiniz. Daha fazla bilgi için Tornado belgelerinde RequestHandler.on_connection_close () Bkz.
Bu ana iş parçacığı üzerinde yapılır (),) Tornado tüm çağrılar (yazma gerektirir floş () ve bitiş hatırlamak önemlidir. Sen IOLoop.instance ile ana iş parçacığı (). Add_callback (geri) çalıştırmak için bir işlev planlayabilirsiniz.
Not: Herhangi bir veri JSON veri olarak müşteriye gönderilecek ve doğrulama x-toto-hmac başlığını oluşturmak için kullanılan () method.invoke bir çağrı döndü. Bu asenkron yöntemlerle sorunlara neden olabilir. Method.invoke () Hiçbiri dönerse, bir yanıt istemciye otomatik olarak gönderilir olmayacak ve hiçbir x toto-hmac başlığı oluşturulur.
İstekler
Sigara doğrulanmış yöntemler:
Şeklinde JSON nesnesi ile 1. Çağrı hizmeti: {"yöntemi": "abc", "parametreleri":
2. Ayrıştırma yanıt JSON.
Hesap Oluşturma:
1. Çağrı account.create yöntemi {"user_id":
2. base64 ile cevap vücudun HMAC-SHA1 kodlanmış olduğunu doğrulayın
3. Ayrıştırma yanıt JSON.
4. Okuma ve mağaza tepki nesneden session_id.
Giriş Yap:
1. Çağrı account.login yöntemi {"user_id":
2. base64 ile cevap vücudun HMAC-SHA1 kodlanmış olduğunu doğrulayın
3. Ayrıştırma yanıt JSON.
4. Okuma ve mağaza tepki nesneden session_id.
Kimliği doğrulanmış yöntemler:
1. Giriş (bakınız yukarıda).
Şeklinde JSON nesnesi ile 2. Arama hizmeti: {"yöntemi": "abc", "parametreleri":
3. base64 ile cevap vücudun HMAC-SHA1 kodlanmış olduğunu doğrulayın
4. Ayrıştırma yanıt JSON.
Not: Bu talimatlar method.invoke () tefrika ve müşteriye gönderilecek bir nesne döndürür varsayalım. Yok dönüş yöntemleri göndermek herhangi bir veri kullanılabilir ve buna göre ele alınmalıdır.
Etkinlikler
Bazen başka bir isteği olayları göndermek gerekebilir. Toto toto.events.EventManager bu kolaylaştırır.
Bir olay kullanım EventManager.instance göndermek için (). ('EventName', args) göndermek. Eğer cPickle args olarak işleyebilir bir şey geçebilir böylece EventManager seri için Python en cPickle modülü kullanır.
Bir olayı almak için, EventManager.instance () ile bir işleyici kaydetmeniz gerekir. Register_handler ('EventName', işleyici). işleyici bir parametre alır ve EventManager 'eventName' ile bir olay gönderdiğinde args ile çağrılır bir fonksiyondur. Toto olaylar öncelikle engellenmeyen istekleri için tornadonun desteği ile birleştirilmek üzere tasarlanmıştır. Bir örnek için "sohbet" şablon bakın.
Toto olay sistemi birden çok örneği arasında aynı makinede ve dağıtılmış bir sistem olayları göndermeyi destekler. Daha fazla yapılandırma seçenekleri için --help ile sunucu çalıştırın
Daemonization
Toto sunucu argümanı --daemon = başlangıç geçirerek bir daemon olarak çalıştırılabilir. Çalışan süreçleri = durdurma --daemon geçmek durdurmak için. Bu belirtilen pid dosya formatını (varsayılan toto.pid) paylaşan tüm işlemleri durdurur. --processes = seçeneği çalıştırmak için sunucu örneklerinin sayısını belirtmek için kullanılır olabilir. Birden çok örneği --port tarafından belirtilen limanda başlayan sıralı limanları üzerinde çalışacaktır. 0 --processes argüman olarak kullanılırsa Python çoklu modülü tarafından tespit edilen, Toto cpu başına bir süreci çalışacaktır. Ek daemonization seçenekleri --help görülebilir.
Müşteriler
Başlamanıza yardımcı olmak için, JavaScript ve iOS istemci kütüphaneleri https://github.com/JeremyOT/TotoClient-JS ve https://github.com/JeremyOT/TotoClient-iOS sırasıyla en geliştirilmektedir.
Özellikler :
- herhangi bir platformda müşteriler tarafından kolayca tüketim için JSON kullanır
- Kolay yeni yöntemler eklemek için
- doğrulanmış istekleri için HMAC-SHA1 doğrulaması ile inşa Basit kimlik
- doğrulanmış istekleri için Oturum durumu sebat
- Oturumlar sunucular arasında ölçekleme basitleştirmek için
Veritabanında saklanan
Gereksinimler :
- Python
Yorum Bulunamadı