scalatra ベースの API に実装したいグローバル フィルターがあります。簡単にするために、値 bar を持つ変数 foo を持つすべての API 呼び出しで 403 をスローする必要があります。この問題は、継承チェーンで開始しました。
class NoFooBarRouter extends ScalatraServlet{
before() {
if(params.getOrElse("foo", "") == "bar") //params is empty here.
halt(403, "You are not allowed here")
else
pass()
}
}
class APIRouter extends NoFooBarRouter{
get("/someurl/:foo") {
"Hello world!"
}
}
これは動作しません。デバッグ プロセス中に、param の有無に関係なく、params 変数が常に空であることに気付きました。より良いアプローチがありますか、またはフィルター前からパラメーターを抽出する別の方法がありますか?