Toto

Logiciel capture d'écran:
Toto
Détails logiciels:
Version: 0.12.0
Date de transfert: 20 Feb 15
Développeur: JeremyOT
Licence: Gratuit
Popularité: 5

Rating: 4.0/5 (Total Votes: 1)

Toto est un petit cadre destiné à accélérer le développement de serveur API. Il est construit sur le dessus de Tornado et peut actuellement utiliser MySQL ou MongoDB comme une base de données de support.
Installation
La façon la plus simple d'installer Toto est avec pip. Il suffit de lancer pip installer git -e + git: //github.com/JeremyOT/Toto.git#egg=Toto d'installer la dernière version du module Toto sur votre machine.
Utilisation
Premiers pas avec Toto est facile, tout ce que vous devez faire est de faire une nouvelle instance de toto.TotoServer et appeler run (). Toto a besoin d'un module de racine à utiliser pour la recherche de méthode. Par défaut, un TotoServer va chercher un module appelé méthodes. Le paramètre method_module peut être utilisé pour spécifier un autre module par son nom.
Configuration
Par défaut, Toto est configuré pour se exécuter sur le port 8888 et se connecter à un serveur MongoDB se exécutant sur localhost. La configuration peut être réalisée de trois manières à chaque impérieuses la dernière:
1. En passant options paramètres nommés au constructeur TotoServer.
2. Grâce à un fichier de configuration en passant le chemin vers le fichier de configuration que le premier paramètre du constructeur TotoServer.
3. Avec les paramètres de ligne de commande (--option = 'valeur de chaîne' --option = 1234)
En combinant les méthodes de configuration peut être utile lors du débogage. Exécutez votre script avec --help pour voir la liste complète des paramètres disponibles.
Méthodes
Méthodes sont référencées par leur nom dans chaque demande. a.b.c (ou a / b / c) mappe methods.a.b.c. Pour ajouter de nouvelles méthodes, ajouter des modules et paquets vers les méthodes (ou spécifié) forfait (voir le package de compte pour la référence) et se assurer que chaque module appelable définit invoquer (Handler, paramètres), où est le gestionnaire TotoHandler (sous-classe de tornado.web. RequestHandler) traitement de la demande actuelle.
handler.connection.db offre un accès direct à la base de données utilisée par le cadre des sessions et des comptes.
handler.session permet d'accéder à la session actuelle ou None si non authentifié. Propriétés disponibles:
- Session.user_id - l'ID de l'utilisateur courant
- Session.expires - l'horodatage UNIX lorsque la session expire
- Session.session_id - l'ID de session en cours
- Session.state - un dict python contenant l'état actuel, vous devez appeler session.save_state () à persister toute modification
Pour appliquer l'authentification pour toute méthode, décorer la fonction invoke () par @ toto.invocation.authenticated. Les tentatives non autorisées d'appeler des méthodes authentifiés retourneront une erreur ne est pas autorisée.
Paramètres nécessaires peuvent être spécifiées en décorant une fonction invoke () par @ toto.invocation.requires (param1, param2, ...).
modules de méthodes peuvent profiter des caractéristiques non de blocage de Tornado en décorant une fonction invoke () par @ toto.invocation.asynchronous. Lorsque l'opération asynchrone est terminée, vous devez appeler handler.finish () afin de terminer la demande. Les données peuvent être envoyées au client avec handler.write () et handler.flush (). En option, les modules peuvent mettre en œuvre on_connection_close () pour nettoyer toutes les ressources si le client ferme la connexion. Voir RequestHandler.on_connection_close () dans la documentation Tornado pour plus d'informations.
Il est important de se rappeler que Tornado exige que tous les appels à écrire (), flush () et la finition () sont exécutées sur le thread principal. Vous pouvez programmer une fonction à exécuter sur le thread principal avec IOLoop.instance (). Add_callback (de rappel).
Note: Les données renvoyées par un appel à method.invoke () sera envoyé au client que les données JSON et être utilisé pour générer l'en-tête x-toto-hmac pour vérification. Cela peut provoquer des problèmes avec les méthodes asynchrones. Si method.invoke () retourne None, une réponse ne sera pas automatiquement envoyé au client et aucun en-tête x-toto-hmac sera généré.
Demande
Méthodes non-authentifiés:
1. Le service Appel avec un objet JSON sous la forme: {"méthode": "abc", "paramètres": }. Au lieu de passer la "méthode" argument dans le corps de la demande, il est également possible d'appeler des méthodes par URL. L'URL équivalent à l'appel ci-dessus est http://service.com/service/a/b/c.
2. analyser la réponse JSON.
Création de compte:
Méthode de account.create 1. Appelez avec {"user_id": , "password": }.
2. Vérifiez que les codé en base64 HMAC-SHA1 du corps de la réponse avec comme la clé correspond à l'en-tête x-toto-hmac dans la réponse.
3. Parse réponse JSON.
4. Lisez et magasin SESSION_ID de l'objet de réponse.
Se Connecter:
Méthode de account.login 1. Appelez avec {"user_id": , "password": }.
2. Vérifiez que les codé en base64 HMAC-SHA1 du corps de la réponse avec comme la clé correspond à l'en-tête x-toto-hmac dans la réponse.
3. Parse réponse JSON.
4. Lisez et magasin SESSION_ID de l'objet de réponse.
Méthodes authentifiés:
1. Connectez-vous (voir au-dessus).
2. services d'appel avec un objet JSON sous la forme: {"méthode": "abc", "paramètres": } avec l'en-tête x-toto-session-id mis à l'ID de session renvoyé par login et le x tête de toto-hmac mis aux base64 HMAC-SHA1 généré avec comme clé et la demande chaîne JSON que le message.
3. Vérifiez que les codé en base64 HMAC-SHA1 du corps de la réponse avec comme la clé correspond à l'en-tête x-toto-hmac dans la réponse.
4. analyser la réponse JSON.
Note: Ces instructions supposent que method.invoke () retourne un objet à être sérialisé et envoyé au client. Méthodes qui renvoient Aucun peuvent être utilisés l'envoi des données et doivent être manipulés en conséquence.
Événements
Parfois, vous devrez peut-être envoyer des événements d'une demande à l'autre. Toto.events.EventManager de Toto rend cela facile.
Pour envoyer un cas utiliser EventManager.instance (). (Envoyer «eventname ', args). EventManager utilise cPickle module python pour la sérialisation de sorte que vous pouvez passer quelque chose cPickle peut manipuler comme args.
Pour recevoir un événement, vous devez vous inscrire avec un gestionnaire EventManager.instance (). Register_handler ('eventname', gestionnaire). handler est une fonction qui prend une paramètres et sera appelée avec args lorsque le EventManager envoie un événement «eventname '. Les événements de Toto ont été principalement conçus pour être combinés avec le soutien de tornade pour les demandes non-blocage. Voir le modèle "le chat" pour un exemple.
Le système d'événements de Toto prend en charge l'envoi d'événements à travers plusieurs instances à la fois sur la même machine et dans un système distribué. Exécutez votre serveur avec --help pour plus d'options de configuration
démonisation
Le serveur Toto peut être exécuté comme un démon en passant l'argument --daemon = début. Pour arrêter tous les processus de fonctionnement passent --daemon = arrêt. Cela va arrêter tous les processus qui partagent le format de fichier pid spécifié (toto.pid par défaut). Les --processes = option peut être utilisée pour spécifier le nombre d'instances de serveur pour fonctionner. Plusieurs instances seront exécutés sur les ports séquentiels à partir du port spécifié par --port. Si 0 est utilisé comme argument de --processes, Toto se déroulera un processus par CPU comme détecté par le module de multitraitement de Python. Options de démonisation supplémentaires peuvent être consultés à partir --help.
Clients
Pour vous aider à démarrer, bibliothèques client JavaScript et iOS sont en développement au https://github.com/JeremyOT/TotoClient-JS et https://github.com/JeremyOT/TotoClient-iOS respectivement.

Caractéristiques :

  • Utilise JSON pour la consommation facile par les clients sur toute plateforme
  • Facile à ajouter de nouvelles méthodes
  • L'authentification simple construit dans la vérification HMAC-SHA1 pour les demandes authentifiées
  • la persistance de l'état de session pour les demandes authentifiées
  • Sessions stockées dans la base de données pour simplifier l'extension sur les serveurs

Exigences :

  • Python

Commentaires à Toto

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!