2016-06-07 1 views
0

Si je par exemple ce simple serveur TCP:action url Twisted routage

from twisted.internet import reactor 
from twisted.web.resource import Resource 
from twisted.web.server import Site 

from resources import SomeResource 


logging.info("Starting server...") 
root = Resource() 
root.putChild("test", SomeResource()) 
reactor.listenTCP(8080, Site(root)) 
reactor.run() 

Avec uneResource qui a les méthodes render_GET et render_POST par exemple. Je sais que je peux envoyer un POST/GET à hostname: 8080/test

Mais maintenant, je veux le rendre plus compliqué, je voudrais faire quelque chose comme nom d'hôte: 8080/test/état

Est-ce que cela pourrait être défini dans SomeResource() comme une méthode? ou dois-je définir une nouvelle ressource pour chaque URL différente?

+0

http://twisted.readthedocs.io/fr/twisted-16.2.0/web/howto/web-in-60/dynamic-dispatch.html devrait vous aider. Si votre code devient vraiment compliqué, je recommanderais Klein https://github.com/twisted/klein qui est beaucoup plus simple à écrire. –

Répondre

0

Si vous voulez tout ce qui va/test/.... pour arriver à la méthode de uneResource, juste définir comme leaf rendre (render_GET/render_POST):

class SomeResource(Resource): 
    isLeaf = True 

Si vous voulez regardez la partie après "test /", request.postpath l'inclura.

+0

Bonjour, merci pour votre réponse! cette solution serait-elle similaire à l'utilisation de la méthode getChild puis redirct? – lapinkoira

+0

Non, ne faites pas ça. Vous perdrez des informations de la requête de cette façon (request.postpath). – moshez