2
我已經創建了一個簡單的控制器(下面的代碼是混淆和簡化的,假設ask會返回一個帶有消息的未來)。我想要做的是將HTTP代碼從200以外的地方更改(基於actor結果)。如何使用Scalatra更改AsyncResult的HTTP狀態代碼
當執行下面的代碼,我看到的結果回來如預期,但與200,而不是404
get("/:id") {
new AsyncResult() {
val is: Future[_] = ask(actor, message)(timeout.toMillis)
is.onComplete { res =>
res match {
case Success(result:Any) => NotFound(result) //Not found is just an example of a different HTTP code other than 200
}
}
}
另一個嘗試
case Success(result:Any) => {
this.status_ = (404)
result
}
在這種情況下,我得到一個NullPointerException,因爲response
(HTTPServletResponse)爲空,原因是響應位於單獨的線程中。
TL; DR
怎樣一個有條件地改變AsyncResult /未來的HTTP代碼了Scalatra?
詳細
斯卡拉2.11.6
了Scalatra 2.3.0
阿卡2.3.9