Play では routes ファイルで HTTP ルーティングを記述します。各 route には modifier というマークが付けられます。
例えば次の + nocsrf
の部分。
+ nocsrf
POST /api/new controllers.Api.newThing
Play のドキュメント では
It is also possible to apply modifiers by preceding the route with a line starting with a +. This can change the behavior of certain Play components.
と書かれていますが、具体的な構文が書かれていません。
def modifiers: Parser[List[Modifier]] =
"+" ~> ignoreWhiteSpace ~> repsep("""[^#\s]+""".r, separator) <~ ignoreWhiteSpace ^^ (_.map(Modifier.apply))
separator
は namedError(whiteSpace, "Whitespace expected")
で、 whiteSpace
は """[ \t]+""".r
です。
宣言的でわかりやすいですね。
大雑把に言えば 「+
のあとに whiteSpace 区切りで文字列を並べる」 という構文のようです。
+ foo bar baz
とすれば foo
, bar
, baz
が modifier として設定されます。
play.api.routing.Router.RequestImplicits._ を import すると、
RequestHeader
に対して hasRouteModifier(String)
が呼び出せるので、リクエストが modifier の付いた route を通ってきたかわかります。