2016-11-15 43 views
0

使用最新的akka​​-http我想實現一個端點,它將重定向所有傳入的上載文件請求而不消耗請求實體。如何忽略請求正文和使用akka-http重定向請求

當前實現使用:

put { 
    extractRequest { r: HttpRequest => 
    onComplete(r.discardEntityBytes().future) { done => 
     redirect(Uri("http://example.com"), TemporaryRedirect) 
    } 
    } 
} 

的問題是,它等待,直到整個HTTP請求正文被接收(丟棄),只有後發送重定向應答。從客戶端角度來看,它意味着兩次上傳文件。我試圖將withSizeLimit(0)添加到請求實體,但它引入了早期響應問題。

相關文檔:

+0

你們是不是要確保實體不被轉發還是你只是擔心實體尺寸是多少? –

+0

我想以某種方式避免從客戶端發送大實體2次,如果它被忽略。 – Nikolay

回答

0

我今天所做的類似的東西。你確定丟棄需要在重定向之前完成嗎?

如何:

put { 
    extractRequest { r: HttpRequest => 
    r.discardEntityBytes() // runs wild 

    redirect(Uri("http://example.com"), TemporaryRedirect) 
    } 
} 

.discardEntityBytes被用來嘗試「取消」不必要的網絡流量,接收器將不再需要。在這裏,我們儘快設置它。它運行在後臺(我希望),並且返回重定向也會盡快完成。

我很想聽聽,這是否改變了什麼...