Tornado * WebフレームワークのHTTPRequestクラスは便利です GETとPOST引数をリストにマップします 。理由はわかります-特定の引数名が複数回使用された場合。しかし、一部のRequestHandlerにとって、これは面倒です。たとえば、jsonオブジェクトを渡して、サーバー上でそのまま解析したい場合です。
変更されていないjsonをトルネード/サイクロンサーバーに送信できるように、リストへのマップの動作を無効にする最も簡単な方法は何ですか?
*サイクロン、実際には、ここで実装の違いがある場合に備えて。
self.request.arguments
に直接アクセスする代わりに、アクセサ関数を使用する必要があります。
self.get_argument("ID", default=None, strip=False)
これにより、単一のアイテムが返されます。
引数をJSONオブジェクトに変換したい場合は、非常に簡単に行うことができます。
json.dumps({ k: self.get_argument(k) for k in self.request.arguments })
私は「あなたは運が悪い」と行くつもりです。問題のクラスを書き直すことはできますが(それは面白くないようです)、それ以外は多くのオプションがありません。
私は口述の理解を使用します。
{k:''.join(v) for k,v in req.arguments.iteritems()}