2012-11-20 32 views

回答

2

你可以使用一個RoutesDispatcher

import cherrypy 

class City: 
    def __init__(self, name): 
     self.name = name 
     self.population = 10000 

    @cherrypy.expose 
    def index(self, **kwargs): 
     return "Welcome to %s, pop. %s" % (self.name, self.population) 

    @cherrypy.expose 
    def update(self, **kwargs): 
     self.population = kwargs['pop'] 
     return "OK" 

d = cherrypy.dispatch.RoutesDispatcher() 
d.connect(action='index', name='hounslow', route='/hounslow', controller=City('Hounslow')) 
d.connect(action='index', name='surbiton', route='/surbiton', controller=City('Surbiton'), 
      conditions=dict(method=['GET'])) 
d.mapper.connect('/surbiton', controller='surbiton', 
       action='update', conditions=dict(method=['POST'])) 

conf = {'/': {'request.dispatch': d}} 
cherrypy.config.update({'server.socket_port': 5000}) 
cherrypy.tree.mount(root=None, config=conf) 
cherrypy.engine.start() 

你可能會測試該用瀏覽器上http://127.0.0.1:5000/surbiton 您可以捲曲測試POST命令:

curl -i -X GET http://127.0.0.1:5000/surbiton 
curl -i -d "pop=100" -X POST http://127.0.0.1:5000/surbiton 
curl -i -X GET http://127.0.0.1:5000/surbiton 

還有就是文件來自Routes project

或者這個例子從appmecha