質問:_cp_dispatch not getting called in cherrypyは、要求に一致するプロパティ/メソッドがない場合に_cp_dispatchが呼び出されるのはです。cherrypyの_cp_dispatchの動作があいまいである
しかし、私のコードで:
import cherrypy
class A(object):
def _cp_dispatch(self, vpath):
raise Exception(str(vpath))
@cherrypy.expose
def index(self):
return "start"
@cherrypy.expose
def method_1(self):
return "method_1"
cherrypy.quickstart(A())
_cp_dispatchは、私はそれはまた、これらのために呼び出される必要があるhttp://127.0.0.1:8080/method_1/garbageまたはhttp://127.0.0.1:8080/index/garbage
ためhttp://127.0.0.1:8080/garbageではなくのために呼ばれています。私はmethod_1とインデックスがエンドポイントとして公開されていることがわかりますが、method_1 /ごみのための任意のエンドポイントがありません。だからなぜ_cp_dispatchが呼び出されていないのですか?
あなたの答えをありがとう、3点を詳しく教えてもらえますか?具体的には、「位置づけの議論を期待する」という意味ですか? method1(ガベージ=何か)のようなものを期待しているのでしょうか? –
ええ、引数の名前は "クエリ文字列"を介して渡された場合にのみ関連します。たとえば、 'method1(garbage = None)'として定義された関数がある場合、この関数は '/ method'、'/method1/foo'、 '/ method1?garbage = bar'という3つのurlで呼び出すことができます。最初のケースでは 'garbage == None'、次に' garbage == foo'と 'garbage == bar'があり、' POST'を使うと本体の 'garbage'フィールドを送ることができます。同じ方法で一致させることもできます。すべてがcherrypyの観点、クエリ文字列、URLセグメント、およびURLエンコードされたフォームから「パラメータ」になります。 – cyraxjoe