2017-04-12 4 views
0

私は0、1または以下のURL引数の多くを受け入れることができ、サーバーを持っていることを確認しコードは次のようになりますはトルネード引数

routes = [(r'/cases?([^/]+)', MyHandler)] 
tornado.web.Application.__init__(self, routes, settings={}) 

class MyHandler(APIHandler): 
    ACCEPTED_URL_ARGS = ["id", "name", "owner", "status"] 

    def get(self, i): 
     for key in self.request.arguments: 
      if key not in self.ACCEPTED_URL_ARGS: 
        # error 

URL引数を確認する方法はありますか?

答えて

2

あなたが持っているものは正しいです。 Tornadoでは、self.request.arguments以上の反復処理をするよりも、必要とする引数しかないことを確認する方法は他にありません。

1

ベンが言っているように、これはトルネードでそれを行う正しい方法です。つまり、テストのためのより良い場所はprepareメソッドです。また、厳密に「ピジョン(pythonic)」アプローチは、セットを使用することです。

class MyHandler(APIHandler): 
    ACCEPTED_URL_ARGS = {"id", "name", "owner", "status"} 

    def prepare(self): 
     unwanted_args = self.ACCEPTED_URL_ARGS - set(self.request.arguments) 
     if unwanted_args: 
      # error