0

一部のルートで次の正規表現を使用して、応答コンテンツのフォーマットを有効にしたいと考えています。

    RedirectRoute(r'/mypath/<:|json|xml>', handler=myhandler, handler_method='mymethod', name='myhandler=mymethod', methods=['POST'], strict_slash=True),

上記のスニペットの望ましい機能は次のとおりです。

  • POST /mypath は html を返します
  • POST /mypath/json は application/json を返します
  • POST /mypath/xml は application/xml を返します

これを行う方法はありますか?

4

1 に答える 1

0

Route クラスは、その内部変数以外では正規表現をサポートしていません。だから試してみてください

RedirectRoute('/mypath<format:|/xml|/json>', handler=myhandler, handler_method='mymethod', name='myhandler=mymethod', methods=['POST'], strict_slash=True)

必要なのは、リクエスト ハンドラで受信した値から先頭のスラッシュを削除することだけです。

変数の名前<format:が必要なのは、 (末尾にスラッシュがある) 要求Bad requestの場合に空白 (<:) であるとエラーが発生したためです。webapp がstrict_slash=True として/mypath/リダイレクト先の URL を作成しようとすると、エラーが発生します。/mypath同じエラーが発生したと思います。

于 2013-03-27T13:08:35.433 に答える