pathSuffixTest
Signature
Description
Checks whether the unmatched path of the RequestContext
has a suffix matched by the given PathMatcher
.
Potentially extracts one or more values (depending on the type of the argument) but doesn't consume its match from
the unmatched path.
This directive is very similar to the pathSuffix directive with the one difference that the path suffix
it matched (if it matched) is not consumed. The unmatched path of the RequestContext
is therefore left as
is even in the case that the directive successfully matched and the request is passed on to its inner route.
As opposed to pathPrefixTest this directive matches and consumes the unmatched path from the right, i.e. the end.
ご用心
For efficiency reasons, the given PathMatcher
must match the desired suffix in reversed-segment
order, i.e. pathSuffixTest("baz" / "bar")
would match /foo/bar/baz
! The order within a segment match is
not reversed.
Depending on the type of its PathMatcher
argument the pathSuffixTest
directive extracts zero or more values from
the URI. If the match fails the request is rejected with an empty rejection set.
Example
val completeWithUnmatchedPath =
extractUnmatchedPath { p =>
complete(p.toString)
}
val route =
pathSuffixTest(Slash) {
complete("slashed")
} ~
complete("unslashed")
// tests:
Get("/foo/") ~> route ~> check {
responseAs[String] shouldEqual "slashed"
}
Get("/foo") ~> route ~> check {
responseAs[String] shouldEqual "unslashed"
}
Contents