3

MethodDispatcherfrom是否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)
4

1 回答 1

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类中公开方法,您必须使用 annotation @cherrypy.expose。设置exposed = True可能不起作用。

请参阅我对我自己的问题Combining REST dispatcher with default one in a single CherryPy app 的回答。

于 2014-03-18T10:12:56.227 回答