1

複数のシナリオで再利用したいルート スニペットがあります。

val dirSegment = "licenses"
path( dirSegment ~ PathEnd ) {
  redirect( dirSegment + "/", StatusCodes.MovedPermanently ) 
} ~ 
pathPrefix(dirSegment) { 
  path("") {
    /* do something */
  }
}

これをディレクティブ (またはパラメーター化可能なルート?) に変換したいと思います。ここで、次のようなリダイレクト動作を保持する白のdirSegment代わりに、val の値と任意のさらなるルーティング/コードを指定できます。path("") { /* do something */ }

directoryPath("licenses") {
  path("") {
    /* do something */
  }
} ~ 
directoryPath("about") {
  path("") {
    /* do somthing else */
  }
}

一方、すべての繰り返しなしで、次と同等の動作になります。

val dirSegment = "licenses"
val anotherDir = "About"

path( dirSegment ~ PathEnd ) {
  redirect(dirSegment + "/", StatusCodes.MovedPermanently ) 
} ~ 
pathPrefix(dirSegment) { 
  path("") {
    /* do something */
  }
} ~
path( anotherDir ~ PathEnd ) {
  redirect(anotherDir + "/", StatusCodes.MovedPermanently ) 
} ~ 
pathPrefix(anotherDir) { 
  path("") {
    /* do something else */
  }
}

この質問は、スプレー ルーティングで URL の末尾にスラッシュを自動的に追加するにはどうすればよいですか?のいくつかの議論に触発されたことに注意してください。

4

1 に答える 1