cookie
Signature¶
def cookie(name: String): Directive1[HttpCookiePair]
Description¶
Extracts a cookie with a given name from a request or otherwise rejects the request with a MissingCookieRejection
if the cookie is missing.
Use the optionalCookie directive instead if you want to support missing cookies in your inner route.
Example¶
sourceval route =
cookie("userName") { nameCookie =>
complete(s"The logged in user is '${nameCookie.value}'")
}
// tests:
Get("/") ~> Cookie("userName" -> "paul") ~> route ~> check {
responseAs[String] shouldEqual "The logged in user is 'paul'"
}
// missing cookie
Get("/") ~> route ~> check {
rejection shouldEqual MissingCookieRejection("userName")
}
Get("/") ~> Route.seal(route) ~> check {
responseAs[String] shouldEqual "Request is missing required cookie 'userName'"
}
sourceimport static org.apache.pekko.http.javadsl.server.Directives.complete;
import static org.apache.pekko.http.javadsl.server.Directives.cookie;
final Route route =
cookie(
"userName",
nameCookie -> complete("The logged in user is '" + nameCookie.value() + "'"));
// tests:
testRoute(route)
.run(HttpRequest.GET("/").addHeader(Cookie.create("userName", "paul")))
.assertEntity("The logged in user is 'paul'");
// missing cookie
runRouteUnSealed(route, HttpRequest.GET("/"))
.assertRejections(Rejections.missingCookie("userName"));
testRoute(route)
.run(HttpRequest.GET("/"))
.assertEntity("Request is missing required cookie 'userName'");
1.0.1