Я делаю RESTful WebService с помощью CherryPy 3, но у меня возникает проблема: Я хочу иметь возможность отвечать на запросы вроде: /customers/1/products/386 означает, что я хочу, чтобы весь продукт с ID 386 клиента с идентификатором 1.
Итак, я пытаюсь сделать это с помощью метода 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 с правильными параметрами, он перенаправляет меня на UserController.GET с параметрами 1, "продукты", 386.
Чтобы перенаправить на ProductController.GET, я должен запросить /customers/products/ 386, что является неправильным, потому что я пропускаю параметр идентификатора пользователя.
Я видел в этой презентации: RESTful Web Applications с CherryPy, что стиль пути, который я хочу использовать, кажется хорошим выбором. Но есть ли простой способ реализовать его с помощью Cherry Py?
Я слышал о методе _cp_dispatch для CherryPy 3, но я не понимаю, что это такое и как его использовать. Заменяет ли метод MethodDispatcher?