我正在使用 CherryPy 3 制作一个 RESTful WebService,但我遇到了一个问题:我希望能够回答如下请求: /customers/1/products/386这意味着我想要 ID 为 1 的客户端的 ID 为 386 的所有产品。
所以我尝试使用 CherryPy 的 MethodDispatcher 来实现,如下所示:
class UserController(object):
exposed = True
def __init__(self):
self.product = ProductController()
@log_io
def GET(self, *args):
return "GET Users :" + str(args)
class ProductController(object):
exposed = True
@log_io
def GET(self, *args):
return "GET Product :" + str(args)
但是当我请求 /customers/1/products/386 时,它没有将我重定向到具有正确参数的 ProductController.GET,而是将我重定向到带有参数 1、“产品”、386 的 UserController.GET。
要重定向到 ProductController.GET 我必须查询 /customers/products/386 这是不正确的,因为我错过了用户 ID 参数。
我在此演示文稿中看到:带有 CherryPy 的 RESTful Web Applications,我想使用的路径样式似乎是一个不错的选择。但是有没有一种简单的方法可以用 Cherry Py 来实现它?
我听说过 CherryPy 3 的 _cp_dispatch 方法,但我不知道它是什么以及如何使用它。它会取代 MethodDispatcher 吗?