我正在写一个Spray + Akka小型服务器。博客文章脱颖而出并推荐了这种问题模式。 CapserOk
类有这样的标志:
case class CasperOk(company: Option[Company.Company], existOrNot: Boolean)
我正在检索此数据库行,如果它不存在或发生了一些错误,我想从Spray发出一个回复来告诉客户。
然而,使用这种模式,我不知道在哪里注入开关。
我尝试将代码更改为:
val response = (secCompanyActor ? jObjectFromCasper(company))
.mapTo[CasperOk]
.map(result => result.succeedOrNot match {
case true => (OK, "transaction successful")
case false => (Conflict, "FileLoc format is wrong or it already exists")
})
.recover{case _ => (InternalServerError, "error occured! We will fix this")}
complete(response)
Spray使用complete()
发送HTTP响应。 complete()
可以是两个对象,也可以是字符串/可序列化对象。我想使用两种对象模式(允许我手动编码其标题),理想的情况应该看起来像complete(response._1, response._2)
有没有办法用Akka的未来实现这一目标?
答案 0 :(得分:4)
您可以通过在将来的onComplete方法上注册完成函数来实现此目的。
response.onComplete {
case (statusCode, message) => complete(statusCode, message)
}