【问题标题】:One Action returns Future[Result] while other returns Accumultor[]一个动作返回 Future[Result] 而其他返回 Accumulator[]
【发布时间】:2020-08-12 06:41:15
【问题描述】:

我创建了以下两个Actions

def action1: Action[Either[MaxSizeExceeded, AnyContent]] = silhouette.SecuredAction.async(parse.maxLength(maxAllowedBodySize, parse.anyContent)(materializer)) { ...}


def action2:Action[AnyContent] = silhouette.UserAwareAction.async { ...}

在对它们进行单元测试时,我发现action1 的返回结果是Future[Result]action2 的返回结果是Accumulator[ByteString, Result]

val response:Accumulator[ByteString,Result] = testEnv.controller.action1(request)

val response:Future[Result] = userTestEnv.controller.action2(request)

我不太明白为什么会有差异?为什么返回类型不同?

【问题讨论】:

    标签: scala playframework playframework-2.6


    【解决方案1】:

    我相信原因是对于 [Either[MaxSizeExceeded, AnyContent]] 类型的 ActionAction 返回 Accumulator - https://www.playframework.com/documentation/2.6.x/ScalaEssentialAction

    一般来说,如果Play 知道body 可以放入内存,则返回Future[Result],否则返回Accumulator

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 2016-08-01
      • 1970-01-01
      • 2020-09-11
      • 2020-10-13
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      相关资源
      最近更新 更多