如何从 Akka HTTP 请求中读取 cookie 值
How to read a cookie value from an Akka HTTP request
我是 Akka HTTP 的新手,我想知道如何从 Akka HTTP 请求中提取 cookie。如果可能,有人可以 post 举例说明如何使用 Scala 完成此操作吗?
如 documentation 所述,您可以使用 cookie
指令从请求中提取 cookie:
val 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'"
}
还有一个optionalCookie
指令:
val route =
optionalCookie("userName") {
case Some(nameCookie) => complete(s"The logged in user is '${nameCookie.value}'")
case None => complete("No user logged in")
}
// tests:
Get("/") ~> Cookie("userName" -> "paul") ~> route ~> check {
responseAs[String] shouldEqual "The logged in user is 'paul'"
}
Get("/") ~> route ~> check {
responseAs[String] shouldEqual "No user logged in"
}
我是 Akka HTTP 的新手,我想知道如何从 Akka HTTP 请求中提取 cookie。如果可能,有人可以 post 举例说明如何使用 Scala 完成此操作吗?
如 documentation 所述,您可以使用 cookie
指令从请求中提取 cookie:
val 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'" }
还有一个optionalCookie
指令:
val route = optionalCookie("userName") { case Some(nameCookie) => complete(s"The logged in user is '${nameCookie.value}'") case None => complete("No user logged in") } // tests: Get("/") ~> Cookie("userName" -> "paul") ~> route ~> check { responseAs[String] shouldEqual "The logged in user is 'paul'" } Get("/") ~> route ~> check { responseAs[String] shouldEqual "No user logged in" }