16

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、「products」、386 を使用して UserController.GET にリダイレクトされます。

ProductController.GET にリダイレクトするには、/customers/products/386 を照会する必要がありますが、これはユーザー ID パラメーターが欠落しているため、正しくありません。

このプレゼンテーションで見た : RESTful Web Applications with CherryPyは、使用したいパス スタイルが適切な選択のようです。しかし、Cherry Py で簡単に実装する方法はありますか?

CherryPy 3 の _cp_dispatch メソッドについて聞いたことがありますが、それが何であり、どのように使用するのか正確にはわかりません。MethodDispatcher を置き換えますか?

4

2 に答える 2