如何从 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"
}