如何解决一个动作返回Future [Result],而另一个返回Accumultor []
我创建了以下两个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)
我不太清楚为什么会有区别吗?为什么返回类型不同?
解决方法
我认为原因是对于类型为[Either [MaxSizeExceeded,AnyContent]]的Action
,Action
返回Accumulator
-https://www.playframework.com/documentation/2.6.x/ScalaEssentialAction
通常来说,如果Play
知道主体可以容纳在内存中,那么它将返回Future[Result]
,否则返回Accumulator
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。