CherryPy MethodDispatcher с несколькими URL-путями
Ли MethodDispatcher
от CherryPy
обрабатывать несколько путей URL? Я пытаюсь сделать что-то вроде ниже, но пока просит /customers
работает нормально, просит /orders
всегда возвращать '404 Ничто не соответствует данному URI'.
class Customers(object):
exposed = True
def GET(self):
return getCustomers()
class Orders(object):
exposed = True
def GET(self):
return getOrders()
class Root(object):
pass
root = Root()
root.customers = Customers()
root.orders = Orders()
conf = {
'global': {
'server.socket_host': '0.0.0.0',
'server.socket_port': 8000,
},
'/': {
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
},
}
cherrypy.quickstart(root, '/', conf)
1 ответ
Я думаю, что я решил это, попробуйте использовать:
cherrypy.tree.mount(Root())
cherrypy.tree.mount(Customers(), '/customers',
{'/':
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
}
)
cherrypy.tree.mount(Orders(), '/orders',
{'/':
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
}
)
cherrypy.engine.start()
cherrypy.engine.block()
Похоже, для того, чтобы выставить методы в Root
класс вы должны использовать аннотацию @cherrypy.expose
, настройка exposed = True
наверное не сработает.
См. Мой ответ на мой собственный вопрос Объединение диспетчера REST с диспетчером по умолчанию в одном приложении CherryPy.