2

GETおよびPUTリクエストに反応するRESTAPIに取り組んでいます。

いくつかの理由により、このAPIはPythonとTwistedで記述されます。とは言うものの、ツイストWebは、私が見つけたすべての例に基づくリソースのようです。

つまり、私の理解では、個別のリソースを設定し、それぞれに対してGETとPOSTのハンドラーを定義する必要があります。

私がやりたいのは、要求されたリソースが何であれ呼び出されるGETハンドラーとPOSTハンドラーを設定することです。

擬似コードの場合:

import *the appropriate modules*

class Callback(resource.Resource):
    def render_GET(self,request):
        print "GET!"
    def render_POST(self,request):
        print "POST!"

def main():
    *magic*
    reactor.listenTCP(settings.port,factory)
    reactor.run()
    print "Started callback server on port %d" % settings.port

if __name__ == '__main__':
    main()

残念ながら、私のオンラインでの例の検索では、これを行う方法が見つかりませんでした。

「キャッチオール」リソースを設定する方法、またはこれを処理するためにさまざまなリアクタータイプを使用する方法についての入力は、最もありがたいです。

4

1 に答える 1

6

この質問(そしておそらくあなたが持っている他の質問:)は、60秒のドキュメントシリーズのツイステッドウェブで答えられます。

特に、TwistedWebで「動的URLディスパッチ」と呼ばれるものについて質問しています。Resource.putChild静的URLディスパッチを処理できるAPIをすでに見つけているようです。動的URLディスパッチを使用すると、処理するすべてのURLのハンドラーを事前に設定する必要はありません。代わりに、オーバーライドgetChildして、オンデマンドでリソースを作成するための独自のロジックを実装します。

詳細については、動的ディスパッチドキュメントを参照してください。ただし、要点は次のとおりです。

class Calendar(Resource):
   def getChild(self, name, request):
       return YearPage(int(name))

これは、YearPage整数が何であるかを知っているリソースを作成することにより、整数の子を処理するリソースです。Callbackリソースを作成するのと同じようなことができるはずです。

于 2012-11-29T14:08:22.533 に答える