pathEnd
Signature¶
def pathEnd: Directive0
Description¶
Only passes the request to its inner route if the unmatched path of the RequestContext
is empty, i.e. the request path has been fully matched by a higher-level path or pathPrefix directive.
This directive is a simple alias for rawPathPrefix(PathEnd)
and is mostly used on an inner-level to discriminate “path already fully matched” from other alternatives (see the example below). For a comparison between path directives check Overview of path directives.
Example¶
sourceval route =
pathPrefix("foo") {
concat(
pathEnd {
complete("/foo")
},
path("bar") {
complete("/foo/bar")
})
}
// tests:
Get("/foo") ~> route ~> check {
responseAs[String] shouldEqual "/foo"
}
Get("/foo/") ~> route ~> check {
handled shouldEqual false
}
Get("/foo/bar") ~> route ~> check {
responseAs[String] shouldEqual "/foo/bar"
}
sourcefinal Route route =
concat(
pathPrefix(
"foo",
() ->
concat(
pathEnd(() -> complete("/foo")), path("bar", () -> complete("/foo/bar")))));
// tests:
testRoute(route).run(HttpRequest.GET("/foo")).assertEntity("/foo");
testRoute(route).run(HttpRequest.GET("/foo/")).assertStatusCode(StatusCodes.NOT_FOUND);
testRoute(route).run(HttpRequest.GET("/foo/bar")).assertEntity("/foo/bar");
1.0.1