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.

Другие вопросы по тегам