mapUnmatchedPath

mapUnmatchedPath

シグネチャ

説明

内部ルートのリクエストコンテキストのunmatchedPathフィールドを変換します。

`` mapUnmatchedPath``ディレクティブは、:ref:`Custom Directives`の作成のビルディングブロックとして使用されます。 カスタムパスマッチングディレクティブを実装するために使用することができます。

一致しないパスの現在の値を抽出するには、 `` extractUnmatchedPath``を使います。

def ignore456(path: Uri.Path) = path match {
  case s @ Uri.Path.Segment(head, tail) if head.startsWith("456") =>
    val newHead = head.drop(3)
    if (newHead.isEmpty) tail
    else s.copy(head = head.drop(3))
  case _ => path
}
val ignoring456 = mapUnmatchedPath(ignore456)

val route =
  pathPrefix("123") {
    ignoring456 {
      path("abc") {
        complete("Content")
      }
    }
  }

// tests:
Get("/123/abc") ~> route ~> check {
  responseAs[String] shouldEqual "Content"
}
Get("/123456/abc") ~> route ~> check {
  responseAs[String] shouldEqual "Content"
}

Contents