【问题标题】:How to read a cookie value from an Akka HTTP request如何从 Akka HTTP 请求中读取 cookie 值
【发布时间】:2017-12-01 16:55:12
【问题描述】:

我是 Akka HTTP 新手,我想知道如何从 Akka HTTP 请求中提取 cookie。如果可能,有人可以发布一个如何使用 Scala 完成此操作的示例吗?

【问题讨论】:

    标签: scala akka akka-http


    【解决方案1】:

    正如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"
    }
    

    【讨论】:

    • 感谢您提醒我,我需要更加熟悉框架才能清楚地理解文档。它确实帮助我花一些时间在文档中提供的其他示例上。
    猜你喜欢
    • 2017-05-17
    • 2016-08-15
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2017-01-23
    • 2020-10-29
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多